для таких плохих случаев. Чтобы знать, что нужно поправить на
глубинном уровне (в самой библиотеке)
On Jul 28, 4:34 pm, "a.ognevsky" <a.ognev...@gmail.com> wrote:
> Я буквально вчера на сайте редиса игрался с обучающей консолькой и там рассказывалось, что @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
Комментариев нет:
Отправить комментарий