tempoiq 1.0.0

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.
@@ -0,0 +1,5 @@
1
+ key: your-api-key
2
+ secret: your-api-secret
3
+ hostname: your-host.backend.tempoiq.com
4
+ port: 443
5
+ secure: true
@@ -0,0 +1,19 @@
1
+ require 'yaml'
2
+ require 'test/unit'
3
+
4
+ require File.join(File.dirname(__FILE__), "..", "client_test")
5
+
6
+ require 'tempoiq/remoter/live_remoter'
7
+
8
+ class TestLiveClient < Test::Unit::TestCase
9
+ include ClientTest
10
+
11
+ private
12
+
13
+ def get_client(not_used = nil)
14
+ file = File.read(File.join(File.dirname(__FILE__), "integration-credentials.yml"))
15
+ creds = YAML.load(file)
16
+ TempoIQ::Client.new(creds["key"], creds["secret"], creds["hostname"], creds["port"],
17
+ :secure => creds["secure"])
18
+ end
19
+ end
@@ -0,0 +1,116 @@
1
+ require 'test/unit'
2
+ require 'json'
3
+ require 'time'
4
+
5
+ require 'tempoiq/remoter/stubbed_remoter'
6
+
7
+ require 'tempoiq/models/cursor'
8
+ require 'tempoiq/models/pipeline'
9
+ require 'tempoiq/models/search'
10
+ require 'tempoiq/models/query'
11
+ require 'tempoiq/models/read'
12
+ require 'tempoiq/models/row'
13
+
14
+ class CursorTest < Test::Unit::TestCase
15
+ def test_simple_datapoint_cursoring
16
+ remoter = TempoIQ::StubbedRemoter.new(true)
17
+ start = Time.utc(2012, 1, 1)
18
+ stop = Time.utc(2012, 1, 2)
19
+ query = TempoIQ::Query.new(TempoIQ::Search.new("devices", {:devices => :all}),
20
+ TempoIQ::Read.new(start, stop),
21
+ TempoIQ::Pipeline.new)
22
+
23
+ stubbed_read = {
24
+ "data" => [
25
+ {
26
+ "t" => start.iso8601(3),
27
+ "data" => {
28
+ 'device1' => {
29
+ 'sensor1' => 4.0,
30
+ 'sensor2' => 2.0
31
+ }
32
+ }
33
+ }
34
+ ]
35
+ }
36
+ remoter.stub(:get, "/v2/read", 200, JSON.dump(stubbed_read))
37
+
38
+ cursor = TempoIQ::Cursor.new(TempoIQ::Row, remoter, "/v2/read", query)
39
+ rows = cursor.to_a
40
+ assert_equal(1, rows.size)
41
+ end
42
+
43
+ def test_datapoint_cursoring_two_pages
44
+ remoter = TempoIQ::StubbedRemoter.new(true)
45
+ start = Time.utc(2012, 1, 1)
46
+ middle = start + 100
47
+ stop = Time.utc(2012, 1, 2)
48
+ query = TempoIQ::Query.new(TempoIQ::Search.new("devices", {:devices => :all}),
49
+ TempoIQ::Read.new(start, stop),
50
+ TempoIQ::Pipeline.new)
51
+
52
+ next_query = query.to_hash
53
+ next_query['read']['start'] = middle.iso8601(3)
54
+ first_read = {
55
+ "data" => [
56
+ {
57
+ "t" => middle.iso8601(3),
58
+ "data" => {
59
+ 'device1' => {
60
+ 'sensor1' => 4.0,
61
+ 'sensor2' => 2.0
62
+ }
63
+ }
64
+ }
65
+ ],
66
+ "next_page" => {
67
+ "next_query" => next_query
68
+ }
69
+ }
70
+ remoter.stub(:get, "/v2/read", 200, JSON.dump(first_read))
71
+
72
+ next_read = first_read
73
+ next_read.delete("next_page")
74
+ next_read["data"][0]["t"] = stop.iso8601(3)
75
+ remoter.stub(:get, "/v2/read", 200, JSON.dump(next_read))
76
+
77
+ cursor = TempoIQ::Cursor.new(TempoIQ::Row, remoter, "/v2/read", query)
78
+ rows = cursor.to_a
79
+ assert_equal(2, rows.size)
80
+ end
81
+
82
+ def test_datapoint_cursoring_error
83
+ remoter = TempoIQ::StubbedRemoter.new(true)
84
+ start = Time.utc(2012, 1, 1)
85
+ middle = start + 100
86
+ stop = Time.utc(2012, 1, 2)
87
+ query = TempoIQ::Query.new(TempoIQ::Search.new("devices", {:devices => :all}),
88
+ TempoIQ::Read.new(start, stop),
89
+ TempoIQ::Pipeline.new)
90
+
91
+ next_query = query.to_hash
92
+ next_query['read']['start'] = middle.iso8601(3)
93
+ first_read = {
94
+ "data" => [
95
+ {
96
+ "t" => middle.iso8601(3),
97
+ "data" => {
98
+ 'device1' => {
99
+ 'sensor1' => 4.0,
100
+ 'sensor2' => 2.0
101
+ }
102
+ }
103
+ }
104
+ ],
105
+ "next_page" => {
106
+ "next_query" => next_query
107
+ }
108
+ }
109
+ remoter.stub(:get, "/v2/read", 200, JSON.dump(first_read))
110
+ remoter.stub(:get, "/v2/read", 500)
111
+
112
+ assert_raise TempoIQ::HttpException do
113
+ TempoIQ::Cursor.new(TempoIQ::Row, remoter, "/v2/read", query).to_a
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,15 @@
1
+ require 'test/unit'
2
+
3
+ require File.join(File.dirname(__FILE__), "..", "client_test")
4
+
5
+ require 'tempoiq/remoter/stubbed_remoter'
6
+
7
+ class TestStubbedClient < Test::Unit::TestCase
8
+ include ClientTest
9
+
10
+ private
11
+
12
+ def get_client(pop_stubs = false)
13
+ TempoIQ::Client.new("key", "secret", "backend.tempoiq.com", 8080, :remoter => TempoIQ::StubbedRemoter.new(pop_stubs))
14
+ end
15
+ end
metadata ADDED
@@ -0,0 +1,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tempoiq
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - TempoIQ Inc.
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-unit
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'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: httpclient
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '2.4'
48
+ - - '>='
49
+ - !ruby/object:Gem::Version
50
+ version: 2.4.0
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ version: '2.4'
58
+ - - '>='
59
+ - !ruby/object:Gem::Version
60
+ version: 2.4.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: httpclient_link_header
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ description: Ruby bindings for the TempoIQ API
76
+ email:
77
+ - software@tempoiq.com
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - Gemfile
83
+ - README.md
84
+ - Rakefile
85
+ - lib/tempoiq.rb
86
+ - lib/tempoiq/client.rb
87
+ - lib/tempoiq/constants.rb
88
+ - lib/tempoiq/models/bulk_write.rb
89
+ - lib/tempoiq/models/cursor.rb
90
+ - lib/tempoiq/models/datapoint.rb
91
+ - lib/tempoiq/models/delete_summary.rb
92
+ - lib/tempoiq/models/device.rb
93
+ - lib/tempoiq/models/find.rb
94
+ - lib/tempoiq/models/multi_status.rb
95
+ - lib/tempoiq/models/pipeline.rb
96
+ - lib/tempoiq/models/query.rb
97
+ - lib/tempoiq/models/read.rb
98
+ - lib/tempoiq/models/row.rb
99
+ - lib/tempoiq/models/search.rb
100
+ - lib/tempoiq/models/selection.rb
101
+ - lib/tempoiq/models/sensor.rb
102
+ - lib/tempoiq/models/single.rb
103
+ - lib/tempoiq/remoter/http_result.rb
104
+ - lib/tempoiq/remoter/live_remoter.rb
105
+ - lib/tempoiq/remoter/stubbed_remoter.rb
106
+ - lib/trusted-certs.crt
107
+ - test/client_test.rb
108
+ - test/integration/integration-credentials.yml
109
+ - test/integration/test_live_client.rb
110
+ - test/unit/test_cursor.rb
111
+ - test/unit/test_stubbed_client.rb
112
+ homepage: https://tempoiq.com
113
+ licenses:
114
+ - MIT
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.4.4
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: TempoIQ http client
136
+ test_files: []