stream_stats 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 34bd7a101e01a96006a3df7971532d0b7b55166d
4
- data.tar.gz: c8f925a680d994cdaf03d1aec8768d69bbf93de4
3
+ metadata.gz: 84b135a85d843c06875ca540fd2a492d932f1a7c
4
+ data.tar.gz: 2c3747c578d13fa06f344cfa2a2079faa03bdc4f
5
5
  SHA512:
6
- metadata.gz: 25aebe5f66b5f287ea8ddc150c34ae8a7156c74d338f9bcac2fc25892da6b0d610a9df111c74eedcf03805e1f554323bab7017ef1d29f8f7c29730dc9fb57fe6
7
- data.tar.gz: 4ab1046ef06e40bd4cac0ca4b2c75cd99e192aa212a28042a5eeaaf8c21dcc32a917be3b12052918de86d461b1a7b00fe802af4423d54e14ed7f24fe81c0939a
6
+ metadata.gz: 3ca93d154216b3e4eebe987a214517d8cf9516c14513fed62102a7d0a91104336ae7dc2d20c96a01e606a8aded8be1314d044252f03f378f615e2b0c6d931c6d
7
+ data.tar.gz: 39870beb67f6d297a944b4c6215f211f8f00a6f2f5a62edfbf794e49ad0555d8dd978f949325a5bace3218519fa51d3a1159c9fbd3c2a39d36993d9e52469082
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'rake'
7
+ end
8
+
9
+ group :test do
10
+ gem 'simplecov', require: false
11
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ stream_stats (0.0.4)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ multi_json (1.7.6)
10
+ rake (10.0.4)
11
+ rdoc (4.0.0)
12
+ simplecov (0.7.1)
13
+ multi_json (~> 1.0)
14
+ simplecov-html (~> 0.7.1)
15
+ simplecov-html (0.7.1)
16
+
17
+ PLATFORMS
18
+ ruby
19
+
20
+ DEPENDENCIES
21
+ rake
22
+ rdoc
23
+ simplecov
24
+ stream_stats!
data/README.rdoc CHANGED
@@ -16,14 +16,16 @@ Create stream and add values
16
16
  stream = StreamStats::Stream.new(0.001, [0.50, 0.90])
17
17
 
18
18
  Parameters:
19
- precision level
20
- array of quantiles for guaranteed precision
19
+ 1) precision level
20
+ 2) array of quantiles for guaranteed precision
21
21
 
22
- The above example guarantees that the 50% and 90% percentile results are guaranteed accurage to +/- 0.001.
22
+ The above example guarantees that the 50% and 90% percentile results are accurate to +/- 0.001.
23
23
 
24
24
  Populate stream with samples:
25
25
 
26
- (0..20).each do |i| stream << i end
26
+ (0..20).each do |i|
27
+ stream << i
28
+ end
27
29
 
28
30
  Get stream result whenever desired:
29
31
 
@@ -39,5 +41,6 @@ Get stream result whenever desired:
39
41
 
40
42
  === Credit
41
43
 
42
- Complete credit goes to Armon Dadgar. Algorithm code copied directly out of [statsite](https://github.com/armon/statsite)
44
+ Complete credit goes to Armon Dadgar.
45
+ Algorithm code copied directly out of [statsite](http://github.com/armon/statsite)
43
46
 
data/Rakefile ADDED
@@ -0,0 +1,53 @@
1
+ require 'bundler/setup'
2
+ require 'rake'
3
+ require 'rake/testtask'
4
+ require 'rake/clean'
5
+ require 'rdoc/task'
6
+
7
+ task default: :test
8
+
9
+ NAME = 'stream_stats'
10
+
11
+ # rule to build the extension: this says
12
+ # that the extension should be rebuilt
13
+ # after any change to the files in ext
14
+ file "lib/#{NAME}/#{NAME}.#{RbConfig::CONFIG['DLEXT']}" =>
15
+ Dir.glob("ext/#{NAME}/*{.rb,.c}") do
16
+ Dir.chdir("ext/#{NAME}") do
17
+ # this does essentially the same thing
18
+ # as what RubyGems does
19
+ ruby "extconf.rb"
20
+ sh "make"
21
+ end
22
+ cp "ext/#{NAME}/#{NAME}.#{RbConfig::CONFIG['DLEXT']}", "lib/#{NAME}"
23
+ end
24
+
25
+
26
+ # make the :test task depend on the shared
27
+ # object, so it will be built automatically
28
+ # before running the tests
29
+ task :test => "lib/#{NAME}/#{NAME}.#{RbConfig::CONFIG['DLEXT']}"
30
+
31
+ # use 'rake clean' and 'rake clobber' to
32
+ # easily delete generated files
33
+ CLEAN.include("ext/**/*{.o,.log,.#{RbConfig::CONFIG['DLEXT']}}")
34
+ CLEAN.include('ext/**/Makefile')
35
+ CLEAN.include("lib/#{NAME}/#{NAME}.#{RbConfig::CONFIG['DLEXT']}")
36
+ CLOBBER.include("lib/**/*.#{RbConfig::CONFIG['DLEXT']}")
37
+
38
+
39
+ Rake::TestTask.new(:test) do |t|
40
+ t.libs << 'lib'
41
+ t.libs << 'test'
42
+ t.pattern = 'test/**/*_test.rb'
43
+ t.verbose = true
44
+ end
45
+
46
+ desc 'Generate documentation.'
47
+ RDoc::Task.new(:rdoc) do |rdoc|
48
+ rdoc.rdoc_dir = 'rdoc'
49
+ rdoc.title = 'StreamStats'
50
+ rdoc.options << '--line-numbers' << '--inline-source'
51
+ rdoc.rdoc_files.include('README.rdoc')
52
+ rdoc.rdoc_files.include('lib/**/*.rb')
53
+ end
@@ -0,0 +1,103 @@
1
+ #include <math.h>
2
+ #include "counter.h"
3
+
4
+ /**
5
+ * Initializes the counter struct
6
+ * @arg counter The counter struct to initialize
7
+ * @return 0 on success.
8
+ */
9
+ int init_counter(counter *counter) {
10
+ counter->count = 0;
11
+ counter->sum = 0;
12
+ counter->squared_sum = 0;
13
+ counter->min = 0;
14
+ counter->max = 0;
15
+ return 0;
16
+ }
17
+
18
+ /**
19
+ * Adds a new sample to the struct
20
+ * @arg counter The counter to add to
21
+ * @arg sample The new sample value
22
+ * @return 0 on success.
23
+ */
24
+ int counter_add_sample(counter *counter, double sample) {
25
+ if (counter->count == 0) {
26
+ counter->min = counter->max = sample;
27
+ } else {
28
+ if (counter->min > sample)
29
+ counter->min = sample;
30
+ else if (counter->max < sample)
31
+ counter->max = sample;
32
+ }
33
+ counter->count++;
34
+ counter->sum += sample;
35
+ counter->squared_sum += pow(sample, 2);
36
+ return 0;
37
+ }
38
+
39
+ /**
40
+ * Returns the number of samples in the counter
41
+ * @arg counter The counter to query
42
+ * @return The number of samples
43
+ */
44
+ uint64_t counter_count(counter *counter) {
45
+ return counter->count;
46
+ }
47
+
48
+ /**
49
+ * Returns the mean counter value
50
+ * @arg counter The counter to query
51
+ * @return The mean value
52
+ */
53
+ double counter_mean(counter *counter) {
54
+ return (counter->count) ? counter->sum / counter->count : 0;
55
+ }
56
+
57
+ /**
58
+ * Returns the sample standard deviation counter value
59
+ * @arg counter The counter to query
60
+ * @return The sample standard deviation
61
+ */
62
+ double counter_stddev(counter *counter) {
63
+ double num = (counter->count * counter->squared_sum) - pow(counter->sum, 2);
64
+ double div = counter->count * (counter->count - 1);
65
+ if (div == 0) return 0;
66
+ return sqrt(num / div);
67
+ }
68
+
69
+ /**
70
+ * Returns the sum of the counter
71
+ * @arg counter The counter to query
72
+ * @return The sum of values
73
+ */
74
+ double counter_sum(counter *counter) {
75
+ return counter->sum;
76
+ }
77
+
78
+ /**
79
+ * Returns the sum squared of the counter
80
+ * @arg counter The counter to query
81
+ * @return The sum squared of values
82
+ */
83
+ double counter_squared_sum(counter *counter) {
84
+ return counter->squared_sum;
85
+ }
86
+
87
+ /**
88
+ * Returns the minimum value of the counter
89
+ * @arg counter The counter to query
90
+ * @return The minimum value.
91
+ */
92
+ double counter_min(counter *counter) {
93
+ return counter->min;
94
+ }
95
+
96
+ /**
97
+ * Returns the maximum value of the counter
98
+ * @arg counter The counter to query
99
+ * @return The maximum value.
100
+ */
101
+ double counter_max(counter *counter) {
102
+ return counter->max;
103
+ }
@@ -0,0 +1,77 @@
1
+ #ifndef COUNTER_H
2
+ #define COUNTER_H
3
+ #include <stdint.h>
4
+
5
+ typedef struct {
6
+ uint64_t count; // Count of items
7
+ double sum; // Sum of the values
8
+ double squared_sum; // Sum of the squared values
9
+ double min; // Minimum value
10
+ double max; // Maximum value
11
+ } counter;
12
+
13
+ /**
14
+ * Initializes the counter struct
15
+ * @arg counter The counter struct to initialize
16
+ * @return 0 on success.
17
+ */
18
+ int init_counter(counter *counter);
19
+
20
+ /**
21
+ * Adds a new sample to the struct
22
+ * @arg counter The counter to add to
23
+ * @arg sample The new sample value
24
+ * @return 0 on success.
25
+ */
26
+ int counter_add_sample(counter *counter, double sample);
27
+
28
+ /**
29
+ * Returns the number of samples in the counter
30
+ * @arg counter The counter to query
31
+ * @return The number of samples
32
+ */
33
+ uint64_t counter_count(counter *counter);
34
+
35
+ /**
36
+ * Returns the mean counter value
37
+ * @arg counter The counter to query
38
+ * @return The mean value
39
+ */
40
+ double counter_mean(counter *counter);
41
+
42
+ /**
43
+ * Returns the sample standard deviation counter value
44
+ * @arg counter The counter to query
45
+ * @return The sample standard deviation
46
+ */
47
+ double counter_stddev(counter *counter);
48
+
49
+ /**
50
+ * Returns the sum of the counter
51
+ * @arg counter The counter to query
52
+ * @return The sum of values
53
+ */
54
+ double counter_sum(counter *counter);
55
+
56
+ /**
57
+ * Returns the sum squared of the counter
58
+ * @arg counter The counter to query
59
+ * @return The sum squared of values
60
+ */
61
+ double counter_squared_sum(counter *counter);
62
+
63
+ /**
64
+ * Returns the minimum value of the counter
65
+ * @arg counter The counter to query
66
+ * @return The minimum value.
67
+ */
68
+ double counter_min(counter *counter);
69
+
70
+ /**
71
+ * Returns the maximum value of the counter
72
+ * @arg counter The counter to query
73
+ * @return The maximum value.
74
+ */
75
+ double counter_max(counter *counter);
76
+
77
+ #endif
@@ -7,6 +7,7 @@ VALUE timer_class;
7
7
 
8
8
  static void strstat_timer_free(void *ptr) {
9
9
  destroy_timer(ptr);
10
+ free(ptr);
10
11
  }
11
12
 
12
13
  static VALUE strstat_timer_init(VALUE self, VALUE rb_eps, VALUE rb_quantiles) {
@@ -37,19 +38,24 @@ static VALUE strstat_timer_init(VALUE self, VALUE rb_eps, VALUE rb_quantiles) {
37
38
  init_timer(eps, quantiles, num_quantiles, i_timer);
38
39
 
39
40
  VALUE data = Data_Wrap_Struct(timer_class, NULL, strstat_timer_free, i_timer);
40
- rb_ivar_set(self, rb_intern("timer"), data);
41
+ rb_ivar_set(self, rb_intern("internal_struct"), data);
41
42
 
42
43
  return Qnil;
43
44
  }
44
45
 
46
+ static void *strstat_get_struct(VALUE self) {
47
+ void *ptr;
48
+
49
+ VALUE data = rb_ivar_get(self, rb_intern("internal_struct"));
50
+ Data_Get_Struct(data, timer, ptr);
51
+ return ptr;
52
+ }
53
+
45
54
  static VALUE strstat_timer_add_sample(VALUE self, VALUE rb_sample) {
46
55
 
47
56
  double sample = NUM2DBL(rb_sample);
48
57
 
49
- timer *i_timer;
50
-
51
- VALUE data = rb_ivar_get(self, rb_intern("timer"));
52
- Data_Get_Struct(data, timer, i_timer);
58
+ timer *i_timer = (timer*) strstat_get_struct(self);
53
59
 
54
60
  int returned = timer_add_sample(i_timer, sample);
55
61
  if (returned != 0) {
@@ -60,10 +66,7 @@ static VALUE strstat_timer_add_sample(VALUE self, VALUE rb_sample) {
60
66
  }
61
67
 
62
68
  static VALUE strstat_timer_count(VALUE self) {
63
- timer *i_timer;
64
-
65
- VALUE data = rb_ivar_get(self, rb_intern("timer"));
66
- Data_Get_Struct(data, timer, i_timer);
69
+ timer *i_timer = (timer*) strstat_get_struct(self);
67
70
 
68
71
  return LONG2NUM(timer_count(i_timer));
69
72
  }
@@ -73,10 +76,7 @@ static VALUE strstat_timer_query(VALUE self, VALUE rb_query) {
73
76
  if (query < 0 || query > 1)
74
77
  rb_raise(rb_eRuntimeError, "invalid quantile");
75
78
 
76
- timer *i_timer;
77
-
78
- VALUE data = rb_ivar_get(self, rb_intern("timer"));
79
- Data_Get_Struct(data, timer, i_timer);
79
+ timer *i_timer = (timer*) strstat_get_struct(self);
80
80
  return DBL2NUM(timer_query(i_timer, query));
81
81
  }
82
82
 
@@ -89,10 +89,7 @@ static VALUE strstat_timer_percentile(VALUE self, VALUE rb_percentile) {
89
89
  }
90
90
 
91
91
  static VALUE strstat_timer_commoncall(VALUE self, double(*func)(timer*)) {
92
- timer *i_timer;
93
-
94
- VALUE data = rb_ivar_get(self, rb_intern("timer"));
95
- Data_Get_Struct(data, timer, i_timer);
92
+ timer *i_timer = (timer*) strstat_get_struct(self);
96
93
  return DBL2NUM((*func)(i_timer));
97
94
  }
98
95
 
@@ -115,6 +112,8 @@ static VALUE strstat_timer_squared_sum(VALUE self) {
115
112
  return strstat_timer_commoncall(self, timer_squared_sum);
116
113
  }
117
114
 
115
+ extern void Init_stream_stats_counter(void);
116
+
118
117
  void Init_stream_stats(void) {
119
118
  VALUE module = rb_define_module("StreamStats");
120
119
 
@@ -132,4 +131,5 @@ void Init_stream_stats(void) {
132
131
  rb_define_method(timer_class, "sum", strstat_timer_sum, 0);
133
132
  rb_define_method(timer_class, "squared_sum", strstat_timer_squared_sum, 0);
134
133
 
134
+ Init_stream_stats_counter();
135
135
  }
@@ -0,0 +1,87 @@
1
+ #include <ruby.h>
2
+ #include <stdio.h>
3
+
4
+ #include "counter.h"
5
+
6
+ VALUE counter_class;
7
+
8
+ static VALUE strstat_counter_init(VALUE self) {
9
+
10
+ counter *i_counter = (counter *) malloc(sizeof(counter));
11
+
12
+ init_counter(i_counter);
13
+
14
+ VALUE data = Data_Wrap_Struct(counter_class, NULL, free, i_counter);
15
+ rb_ivar_set(self, rb_intern("internal_struct"), data);
16
+
17
+ return Qnil;
18
+ }
19
+
20
+ static void *strstat_get_struct(VALUE self) {
21
+ void *ptr;
22
+
23
+ VALUE data = rb_ivar_get(self, rb_intern("internal_struct"));
24
+ Data_Get_Struct(data, counter, ptr);
25
+ return ptr;
26
+ }
27
+
28
+ static VALUE strstat_counter_add_sample(VALUE self, VALUE rb_sample) {
29
+
30
+ double sample = NUM2DBL(rb_sample);
31
+
32
+ counter *i_counter = (counter*) strstat_get_struct(self);
33
+
34
+ int returned = counter_add_sample(i_counter, sample);
35
+ if (returned != 0) {
36
+ rb_raise(rb_eRuntimeError, "add sample returned %d", returned);
37
+ }
38
+
39
+ return Qnil;
40
+ }
41
+
42
+ static VALUE strstat_counter_count(VALUE self) {
43
+ counter *i_counter = (counter*) strstat_get_struct(self);
44
+
45
+ return LONG2NUM(counter_count(i_counter));
46
+ }
47
+
48
+ static VALUE strstat_counter_commoncall(VALUE self, double(*func)(counter*)) {
49
+ counter *i_counter = (counter*) strstat_get_struct(self);
50
+ return DBL2NUM((*func)(i_counter));
51
+ }
52
+
53
+ static VALUE strstat_counter_min(VALUE self) {
54
+ return strstat_counter_commoncall(self, counter_min);
55
+ }
56
+ static VALUE strstat_counter_max(VALUE self) {
57
+ return strstat_counter_commoncall(self, counter_max);
58
+ }
59
+ static VALUE strstat_counter_mean(VALUE self) {
60
+ return strstat_counter_commoncall(self, counter_mean);
61
+ }
62
+ static VALUE strstat_counter_stddev(VALUE self) {
63
+ return strstat_counter_commoncall(self, counter_stddev);
64
+ }
65
+ static VALUE strstat_counter_sum(VALUE self) {
66
+ return strstat_counter_commoncall(self, counter_sum);
67
+ }
68
+ static VALUE strstat_counter_squared_sum(VALUE self) {
69
+ return strstat_counter_commoncall(self, counter_squared_sum);
70
+ }
71
+
72
+ void Init_stream_stats_counter(void) {
73
+ VALUE module = rb_define_module("StreamStats");
74
+
75
+ counter_class = rb_define_class_under(module, "Counter", rb_cObject);
76
+
77
+ rb_define_method(counter_class, "initialize", strstat_counter_init, 0);
78
+ rb_define_method(counter_class, "<<", strstat_counter_add_sample, 1);
79
+ rb_define_method(counter_class, "count", strstat_counter_count, 0);
80
+ rb_define_method(counter_class, "min", strstat_counter_min, 0);
81
+ rb_define_method(counter_class, "max", strstat_counter_max, 0);
82
+ rb_define_method(counter_class, "mean", strstat_counter_mean, 0);
83
+ rb_define_method(counter_class, "stddev", strstat_counter_stddev, 0);
84
+ rb_define_method(counter_class, "sum", strstat_counter_sum, 0);
85
+ rb_define_method(counter_class, "squared_sum", strstat_counter_squared_sum, 0);
86
+
87
+ }
@@ -0,0 +1,11 @@
1
+ module StreamStats
2
+ class Counter
3
+
4
+ def inspect
5
+ attr_list = [:count, :sum, :min, :max, :mean, :stddev].map do |method|
6
+ "#{method.to_s}: #{self.send(method)}"
7
+ end * ', '
8
+ "#{self.to_s} {#{attr_list}}"
9
+ end
10
+ end
11
+ end
@@ -1,4 +1,3 @@
1
- class StreamStats
2
- VERSION = "0.0.3"
1
+ module StreamStats
2
+ VERSION = "0.0.4"
3
3
  end
4
-
data/lib/stream_stats.rb CHANGED
@@ -1,6 +1,7 @@
1
- require 'oozie-client/version'
1
+ require 'stream_stats/version'
2
2
  require 'stream_stats/stream_stats'
3
3
  require 'stream_stats/stream'
4
+ require 'stream_stats/counter'
4
5
 
5
6
  module StreamStats
6
7
  end
@@ -0,0 +1,24 @@
1
+ require 'test_helper'
2
+
3
+ module StreamStats
4
+ class CounterTest < MiniTest::Spec
5
+
6
+ def test_basic
7
+ counter = StreamStats::Counter.new
8
+
9
+ (0..20).each do |i|
10
+ counter << i
11
+ end
12
+
13
+ assert_equal 21, counter.count
14
+ assert_equal 210.0, counter.sum
15
+ assert_equal 0.0, counter.min
16
+ assert_equal 20.0, counter.max
17
+ assert_equal 10.0, counter.mean
18
+ assert_in_delta 6.2048368229, counter.stddev, 0.0000000001
19
+
20
+ assert counter.inspect =~ /#<StreamStats::Counter:0x.*> {count: 21, sum: 210.0, min: 0.0, max: 20.0, mean: 10.0, stddev: 6.2048368229954285}/
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,29 @@
1
+ require 'test_helper'
2
+
3
+ module StreamStats
4
+ class StreamTest < MiniTest::Spec
5
+
6
+ def test_basic
7
+ stream = StreamStats::Stream.new(0.001, [0.50, 0.90])
8
+
9
+ (0..20).each do |i|
10
+ stream << i
11
+ end
12
+
13
+ assert_equal 21, stream.count
14
+ assert_equal 210.0, stream.sum
15
+ assert_equal 0.0, stream.min
16
+ assert_equal 20.0, stream.max
17
+ assert_equal 10.0, stream.mean
18
+ assert_in_delta 6.2048368229, stream.stddev, 0.0000000001
19
+ assert_equal 10.0, stream.quantile(0.50)
20
+ assert_equal 10.0, stream.percentile(50)
21
+ assert_equal 18.0, stream.quantile(0.90)
22
+ assert_equal 18.0, stream.percentile(90)
23
+ assert_equal Hash[0.50 => 10.0, 0.9 => 18.0], stream.get_quantiles
24
+
25
+ assert stream.inspect =~ /#<StreamStats::Stream:0x.*> {count: 21, sum: 210.0, min: 0.0, max: 20.0, mean: 10.0, stddev: 6.2048368229954285, quantiles: {0.5=>10.0, 0.9=>18.0}}/
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,9 @@
1
+ if ENV['COVERAGE']
2
+ require 'simplecov'
3
+ SimpleCov.start
4
+ end
5
+
6
+ require 'rubygems'
7
+ require 'bundler/setup'
8
+ require 'minitest/autorun'
9
+ Bundler.require :default
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stream_stats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neville Kadwa
@@ -9,7 +9,21 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2013-06-13 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: Compute statistics on stream data
14
28
  email:
15
29
  - neville@kadwa.com
@@ -18,19 +32,28 @@ extensions:
18
32
  - ext/stream_stats/extconf.rb
19
33
  extra_rdoc_files: []
20
34
  files:
21
- - README.rdoc
35
+ - lib/stream_stats.rb
36
+ - lib/stream_stats/counter.rb
37
+ - lib/stream_stats/stream.rb
38
+ - lib/stream_stats/version.rb
22
39
  - ext/stream_stats/cm_quantile.c
23
40
  - ext/stream_stats/cm_quantile.h
41
+ - ext/stream_stats/counter.c
42
+ - ext/stream_stats/counter.h
24
43
  - ext/stream_stats/extconf.rb
25
44
  - ext/stream_stats/heap.c
26
45
  - ext/stream_stats/heap.h
27
46
  - ext/stream_stats/stream_stats.c
47
+ - ext/stream_stats/stream_stats_counter.c
28
48
  - ext/stream_stats/timer.c
29
49
  - ext/stream_stats/timer.h
30
- - lib/stream_stats.rb
31
- - lib/stream_stats/stream.rb
32
- - lib/stream_stats/version.rb
33
- - stream_stats.gemspec
50
+ - Gemfile
51
+ - Gemfile.lock
52
+ - README.rdoc
53
+ - Rakefile
54
+ - test/stream_stats/counter_test.rb
55
+ - test/stream_stats/stream_test.rb
56
+ - test/test_helper.rb
34
57
  homepage: http://github.com/kadwanev/stream_stats
35
58
  licenses: []
36
59
  metadata: {}
@@ -54,4 +77,7 @@ rubygems_version: 2.0.3
54
77
  signing_key:
55
78
  specification_version: 4
56
79
  summary: Stream Statistics
57
- test_files: []
80
+ test_files:
81
+ - test/stream_stats/counter_test.rb
82
+ - test/stream_stats/stream_test.rb
83
+ - test/test_helper.rb
data/stream_stats.gemspec DELETED
@@ -1,15 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/stream_stats/version', __FILE__)
3
-
4
- Gem::Specification.new do |s|
5
- s.name = 'stream_stats'
6
- s.version = '0.0.1'
7
- s.summary = "Stream Statistics"
8
- s.description = "Compute statistics on stream data"
9
- s.version = StreamStats::VERSION
10
- s.authors = ["Neville Kadwa"]
11
- s.email = ["neville@kadwa.com"]
12
- s.files = `git ls-files`.split($\)
13
- s.homepage = 'http://github.com/kadwanev/stream_stats'
14
- s.extensions = ['ext/stream_stats/extconf.rb']
15
- end