metry 1.2.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. data/History.txt +6 -0
  2. data/Manifest.txt +14 -69
  3. data/TODO +2 -3
  4. data/cucumber.yml +1 -0
  5. data/example/example.rb +1 -1
  6. data/features/psycho/dashboard.feature +17 -0
  7. data/features/psycho/goals.feature +24 -0
  8. data/features/psycho/visitor_tracking.feature +32 -0
  9. data/features/step_definitions/goals.rb +3 -0
  10. data/features/step_definitions/tracking.rb +1 -1
  11. data/features/step_definitions/web.rb +14 -2
  12. data/features/support/env.rb +4 -0
  13. data/lib/metry.rb +4 -6
  14. data/lib/metry/experiment.rb +6 -8
  15. data/lib/metry/psycho.rb +112 -0
  16. data/lib/metry/psycho/dashboard.erb +14 -0
  17. data/lib/metry/psycho/layout.erb +8 -0
  18. data/lib/metry/psycho/new_goal.erb +9 -0
  19. data/lib/metry/psycho/visitor.erb +7 -0
  20. data/lib/metry/rack/tracking.rb +17 -13
  21. data/lib/metry/storage.rb +116 -0
  22. data/radiant/example/features/metry.feature +8 -8
  23. data/radiant/example/features/psycho.feature +13 -0
  24. data/radiant/example/features/step_definitions/experiments.rb +2 -2
  25. data/radiant/example/features/step_definitions/tracking.rb +1 -1
  26. data/radiant/example/features/support/env.rb +3 -0
  27. data/radiant/extension/lib/metry_authenticator.rb +30 -0
  28. data/radiant/extension/lib/metry_tags.rb +2 -1
  29. data/radiant/extension/metry_extension.rb +1 -1
  30. data/test/{test_tokyo.rb → test_storage.rb} +3 -3
  31. metadata +17 -72
  32. data/lib/metry/memory.rb +0 -27
  33. data/lib/metry/tokyo.rb +0 -181
  34. data/vendor/rufus-tokyo/CHANGELOG.txt +0 -112
  35. data/vendor/rufus-tokyo/CREDITS.txt +0 -27
  36. data/vendor/rufus-tokyo/LICENSE.txt +0 -21
  37. data/vendor/rufus-tokyo/README.txt +0 -310
  38. data/vendor/rufus-tokyo/Rakefile +0 -118
  39. data/vendor/rufus-tokyo/TODO.txt +0 -25
  40. data/vendor/rufus-tokyo/doc/decision_table.numbers +0 -0
  41. data/vendor/rufus-tokyo/doc/rdoc-style.css +0 -320
  42. data/vendor/rufus-tokyo/lib/rufus-edo.rb +0 -3
  43. data/vendor/rufus-tokyo/lib/rufus-tokyo.rb +0 -3
  44. data/vendor/rufus-tokyo/lib/rufus/edo.rb +0 -39
  45. data/vendor/rufus-tokyo/lib/rufus/edo/README.txt +0 -106
  46. data/vendor/rufus-tokyo/lib/rufus/edo/cabcore.rb +0 -333
  47. data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/abstract.rb +0 -219
  48. data/vendor/rufus-tokyo/lib/rufus/edo/cabinet/table.rb +0 -159
  49. data/vendor/rufus-tokyo/lib/rufus/edo/error.rb +0 -36
  50. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant.rb +0 -4
  51. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/abstract.rb +0 -137
  52. data/vendor/rufus-tokyo/lib/rufus/edo/ntyrant/table.rb +0 -141
  53. data/vendor/rufus-tokyo/lib/rufus/edo/tabcore.rb +0 -567
  54. data/vendor/rufus-tokyo/lib/rufus/tokyo.rb +0 -58
  55. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/abstract.rb +0 -568
  56. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/lib.rb +0 -230
  57. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/table.rb +0 -753
  58. data/vendor/rufus-tokyo/lib/rufus/tokyo/cabinet/util.rb +0 -425
  59. data/vendor/rufus-tokyo/lib/rufus/tokyo/config.rb +0 -161
  60. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia.rb +0 -43
  61. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/lib.rb +0 -65
  62. data/vendor/rufus-tokyo/lib/rufus/tokyo/dystopia/words.rb +0 -71
  63. data/vendor/rufus-tokyo/lib/rufus/tokyo/hmethods.rb +0 -111
  64. data/vendor/rufus-tokyo/lib/rufus/tokyo/query.rb +0 -102
  65. data/vendor/rufus-tokyo/lib/rufus/tokyo/transactions.rb +0 -74
  66. data/vendor/rufus-tokyo/lib/rufus/tokyo/ttcommons.rb +0 -59
  67. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant.rb +0 -35
  68. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/abstract.rb +0 -146
  69. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/lib.rb +0 -153
  70. data/vendor/rufus-tokyo/lib/rufus/tokyo/tyrant/table.rb +0 -162
  71. data/vendor/rufus-tokyo/rufus-tokyo.gemspec +0 -25
  72. data/vendor/rufus-tokyo/spec/cabinet_spec.rb +0 -472
  73. data/vendor/rufus-tokyo/spec/cabinetconfig_spec.rb +0 -82
  74. data/vendor/rufus-tokyo/spec/edo_cabinet_spec.rb +0 -447
  75. data/vendor/rufus-tokyo/spec/edo_ntyrant_spec.rb +0 -299
  76. data/vendor/rufus-tokyo/spec/edo_ntyrant_table_spec.rb +0 -462
  77. data/vendor/rufus-tokyo/spec/edo_table_spec.rb +0 -560
  78. data/vendor/rufus-tokyo/spec/hmethods_spec.rb +0 -44
  79. data/vendor/rufus-tokyo/spec/incr.lua +0 -20
  80. data/vendor/rufus-tokyo/spec/spec.rb +0 -9
  81. data/vendor/rufus-tokyo/spec/spec_base.rb +0 -23
  82. data/vendor/rufus-tokyo/spec/start_tyrants.sh +0 -26
  83. data/vendor/rufus-tokyo/spec/stop_tyrants.sh +0 -9
  84. data/vendor/rufus-tokyo/spec/table_spec.rb +0 -567
  85. data/vendor/rufus-tokyo/spec/tyrant_spec.rb +0 -309
  86. data/vendor/rufus-tokyo/spec/tyrant_table_spec.rb +0 -479
  87. data/vendor/rufus-tokyo/spec/util_list_spec.rb +0 -200
  88. data/vendor/rufus-tokyo/spec/util_map_spec.rb +0 -132
  89. data/vendor/rufus-tokyo/tasks/dev.rb +0 -70
  90. data/vendor/rufus-tokyo/test/bm0.rb +0 -353
  91. data/vendor/rufus-tokyo/test/bm1_compression.rb +0 -54
  92. data/vendor/rufus-tokyo/test/con0.rb +0 -30
  93. data/vendor/rufus-tokyo/test/mem.rb +0 -49
  94. data/vendor/rufus-tokyo/test/mem1.rb +0 -44
  95. data/vendor/rufus-tokyo/test/readme0.rb +0 -17
  96. data/vendor/rufus-tokyo/test/readme1.rb +0 -21
  97. data/vendor/rufus-tokyo/test/readme2.rb +0 -15
  98. data/vendor/rufus-tokyo/test/readme3.rb +0 -24
  99. data/vendor/rufus-tokyo/test/readmes_test.sh +0 -17
@@ -1,54 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'faker'
4
- require 'benchmark'
5
- require 'rufus/tokyo'
6
-
7
- N = 100_000
8
-
9
- NAME = Faker::Name.name
10
-
11
- DATA = (0..N-1).collect { |i|
12
- #{ 'name' => Faker::Name.name, 'sex' => 'male' }
13
- { 'name' => NAME * 100, 'sex' => 'male' }
14
- }
15
-
16
- t0 = Rufus::Tokyo::Table.new('toto0.tdb')
17
- t1 = Rufus::Tokyo::Table.new('toto1.tdb', :opts => 'ld')
18
- t2 = Rufus::Tokyo::Table.new('toto2.tdb', :opts => 'lb')
19
- #t3 = Rufus::Tokyo::Table.new('toto3.tdb', :opts => 'lt')
20
-
21
- t0.clear
22
- t1.clear
23
- t2.clear
24
- #t3.clear
25
-
26
- Benchmark.benchmark(' ' * 20 + Benchmark::Tms::CAPTION, 20) do |b|
27
- b.report('no compression') do
28
- DATA.each_with_index { |row, i| t0["pk#{i}"] = row }
29
- end
30
- b.report('deflate') do
31
- DATA.each_with_index { |row, i| t1["pk#{i}"] = row }
32
- end
33
- b.report('bzip2') do
34
- DATA.each_with_index { |row, i| t2["pk#{i}"] = row }
35
- end
36
- #b.report('tcbs') do
37
- # DATA.each_with_index { |row, i| t3["pk#{i}"] = row }
38
- #end
39
- end
40
-
41
- t0.close
42
- t1.close
43
- t2.close
44
- #t3.close
45
-
46
- puts
47
-
48
- puts 'no compression : ' + `ls -l toto0.tdb | awk '{ print $5 }'`
49
- puts 'deflate : ' + `ls -l toto1.tdb | awk '{ print $5 }'`
50
- puts 'bzip2 : ' + `ls -l toto2.tdb | awk '{ print $5 }'`
51
- #puts 'tcbs : ' + `ls -l toto3.tdb | awk '{ print $5 }'`
52
-
53
- puts
54
-
@@ -1,30 +0,0 @@
1
-
2
- require 'rubygems'
3
-
4
- require 'rufus/scheduler'
5
- require 'rufus/tokyo/tyrant'
6
- require 'rufus/edo/ntyrant'
7
-
8
- SCHEDULER = Rufus::Scheduler.start_new
9
-
10
- FFI_TABLE = Rufus::Tokyo::TyrantTable.new('127.0.0.1', 45001)
11
- NET_TABLE = Rufus::Edo::NetTyrantTable.new('127.0.0.1', 45001)
12
-
13
- def check_connection (table)
14
- p [ table.class, table.stat ]
15
- end
16
-
17
- $interval = 0
18
-
19
- BLOCK = lambda {
20
- puts "=== #{Time.now}"
21
- check_connection(FFI_TABLE)
22
- check_connection(NET_TABLE)
23
- $interval = $interval + 1
24
- SCHEDULER.in("#{$interval}h", &BLOCK)
25
- }
26
-
27
- BLOCK.call
28
-
29
- SCHEDULER.join
30
-
@@ -1,49 +0,0 @@
1
-
2
- %w{ lib test }.each do |path|
3
- path = File.expand_path(File.dirname(__FILE__) + '/../' + path)
4
- $: << path unless $:.include?(path)
5
- end
6
-
7
- require 'fileutils'
8
-
9
-
10
- def self_ps
11
- ps = `ps -v #{$$}`.split("\n").last.split(' ')
12
- %w{
13
- pid stat time sl re pagein vsz rss lim tsiz pcpu pmem command
14
- }.inject({}) { |h, k|
15
- h[k.intern] = ps.shift; h
16
- }
17
- end
18
-
19
- def pmem (msg)
20
- p [ msg, "#{self_ps[:vsz].to_i / 1024}k" ]
21
- end
22
-
23
- pmem 'starting'
24
-
25
- require 'rubygems'
26
- require 'rufus/tokyo'
27
-
28
- FileUtils.rm('test_mem.tch')
29
-
30
- db = Rufus::Tokyo::Cabinet.new('test_mem.tch')
31
-
32
- pmem 'wired to db'
33
-
34
- 500_000.times { |i| db[i.to_s] = "value#{i}" }
35
-
36
- pmem 'loaded 500_000 records'
37
-
38
- db.each { |k, v| k }
39
-
40
- pmem 'iterated 500_000 records'
41
-
42
- a = db.collect { |k, v| k + v }
43
-
44
- pmem 'collected 500_000 records'
45
-
46
- db.close
47
-
48
- pmem 'closed db'
49
-
@@ -1,44 +0,0 @@
1
-
2
- %w{ lib test }.each do |path|
3
- path = File.expand_path(File.dirname(__FILE__) + '/../' + path)
4
- $: << path unless $:.include?(path)
5
- end
6
-
7
- require 'fileutils'
8
-
9
-
10
- def self_ps
11
- ps = `ps -v #{$$}`.split("\n").last.split(' ')
12
- %w{
13
- pid stat time sl re pagein vsz rss lim tsiz pcpu pmem command
14
- }.inject({}) { |h, k|
15
- h[k.intern] = ps.shift; h
16
- }
17
- end
18
-
19
- def pmem (msg)
20
- p [ msg, "#{self_ps[:vsz].to_i / 1024}k" ]
21
- end
22
-
23
- pmem 'starting'
24
-
25
- require 'rubygems'
26
- require 'rufus/tokyo/util'
27
-
28
- pmem 'required'
29
-
30
- l = Rufus::Tokyo::List.new
31
-
32
- 100000.times { |i| l << i.to_s }
33
-
34
- pmem 'stored'
35
-
36
- #100000.times { |i| l.delete_at(0) }
37
- #100000.times { |i| s = l.delete_at(0); Rufus::Tokyo::CabinetLib.tcfree(s) }
38
- s = nil
39
- 100000.times { |i| s ||= l.delete_at(0); }
40
- p s.class
41
- p s.public_methods.sort
42
-
43
- pmem 'cleared'
44
-
@@ -1,17 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'rufus/tokyo'
4
-
5
- db = Rufus::Tokyo::Cabinet.new('data.tch')
6
-
7
- db['nada'] = 'surf'
8
-
9
- p db['nada'] # => 'surf'
10
- p db['lost'] # => nil
11
-
12
- 5000.times { |i| db[i.to_s] = "x" }
13
-
14
- p db.inject { |r, (k, v)| k } # => 4999
15
-
16
- db.close
17
-
@@ -1,21 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'rufus/tokyo'
4
-
5
- t = Rufus::Tokyo::Table.new('table.tdb')
6
-
7
- t['pk0'] = { 'name' => 'alfred', 'age' => '22' }
8
- t['pk1'] = { 'name' => 'bob', 'age' => '18' }
9
- t['pk2'] = { 'name' => 'charly', 'age' => '45' }
10
- t['pk3'] = { 'name' => 'doug', 'age' => '77' }
11
- t['pk4'] = { 'name' => 'ephrem', 'age' => '32' }
12
-
13
- p t.query { |q|
14
- q.add_condition 'age', :numge, '32'
15
- q.order_by 'age'
16
- }
17
- # => [ {"name"=>"ephrem", :pk=>"pk4", "age"=>"32"},
18
- # {"name"=>"charly", :pk=>"pk2", "age"=>"45"} ]
19
-
20
- t.close
21
-
@@ -1,15 +0,0 @@
1
-
2
- # ttserver -port 45001 tmp/data.tch
3
-
4
- require 'rubygems'
5
- require 'rufus/tokyo/tyrant'
6
-
7
- db = Rufus::Tokyo::Tyrant.new('localhost', 45001)
8
-
9
- db['nada'] = 'surf'
10
-
11
- p db['nada'] # => 'surf'
12
- p db['lost'] # => nil
13
-
14
- db.close
15
-
@@ -1,24 +0,0 @@
1
-
2
- # ttserver -port 45002 tmp/data.tct
3
-
4
-
5
- require 'rubygems'
6
- require 'rufus/tokyo/tyrant'
7
-
8
- t = Rufus::Tokyo::TyrantTable.new('localhost', 45002)
9
-
10
- t['pk0'] = { 'name' => 'alfred', 'age' => '22' }
11
- t['pk1'] = { 'name' => 'bob', 'age' => '18' }
12
- t['pk2'] = { 'name' => 'charly', 'age' => '45' }
13
- t['pk3'] = { 'name' => 'doug', 'age' => '77' }
14
- t['pk4'] = { 'name' => 'ephrem', 'age' => '32' }
15
-
16
- p t.query { |q|
17
- q.add_condition 'age', :numge, '32'
18
- q.order_by 'age'
19
- }
20
- # => [ {"name"=>"ephrem", :pk=>"pk4", "age"=>"32"},
21
- # {"name"=>"charly", :pk=>"pk2", "age"=>"45"} ]
22
-
23
- t.close
24
-
@@ -1,17 +0,0 @@
1
- #!/bin/bash
2
-
3
- #
4
- # testing the 4 samples in README.txt
5
- #
6
-
7
- [ -d tmp ] || mkdir tmp
8
- nohup ttserver -port 45001 tmp/data.tch &
9
- nohup ttserver -port 45002 tmp/data.tct &
10
-
11
- ruby19 -Ilib test/readme0.rb
12
- ruby19 -Ilib test/readme1.rb
13
- ruby19 -Ilib test/readme2.rb
14
- ruby19 -Ilib test/readme3.rb
15
-
16
- killall ttserver
17
-