Я буквально вчера на сайте редиса игрался с обучающей консолькой и там рассказывалось, что @article.karma + 1 — хреновый вариант, ибо он как раз не атомарный. Для этого там использовался increment.
--
Или я что-то не так понял и путаю?
--
Andrey Ognevsky
On Thursday, July 28, 2011 at 4:12 PM, germans_in_the_town wrote:
Добрый день.
Хотелось бы узнать у сообщества, какие есть способы для тестирования
атомичности (atomicity) данных в условиях множества асинхронных
запросов. На конкретном примере (orm для redis) я делаю так:
https://github.com/german/redis_orm/blob/master/test/atomicity_test.rb
:
require File.dirname(File.expand_path(__FILE__)) + '/test_helper.rb'
class Article < RedisOrm::Base
property :title, String
property :karma, Integer
end
describe "check atomicity" do
it "should properly increment property's value" do
@article = Article.new :title => "Simple test atomicity with
multiple threads", :karma => 1
@article.save
@threads = []
50.times do |i|
@threads << Thread.new(i) do
@article.update_attribute :karma, (@article.karma + 1)
end
end
@@threads.each{|thread| thread.join}
Article.first.karma.should == 51
end
end
Правильно ли это? Какие еще тесты можно добавить?
--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru
Комментариев нет:
Отправить комментарий