stddtool 0.0.9 → 0.1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/stddtool.rb +68 -25
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b5b61f5733ac817d8f207094c7649671284124b4
4
- data.tar.gz: 34b6dd4b48dae0687a1cd564847453c8c635f741
3
+ metadata.gz: 212b8f7cbfab0c4580463bb42f5b3ef7546b67bb
4
+ data.tar.gz: ad70bf67159e02aaa7e3295394797907933ea7b7
5
5
  SHA512:
6
- metadata.gz: 3a09c1e3b88341a2894f8cc0a25eb51a4764d9acc4ab1d1609c6da81603b5fb64d8d48dea2336f288a8cd16100a3432df2711927937d2127a7a7f80e36a2e518
7
- data.tar.gz: f3015d0e7a2ed31764b4fb48d37312f754651f523ed98c7530650f4b8f3afc0b1805657f40b7945bab5aa97adf8f9d84ce21e1a1a4fcc2e6171dfe8fa81502a9
6
+ metadata.gz: 390622f6900933a6237bd0ab8a18eb533f55eeb58086dccca9dc6fd10eb43c5d6a19f6ad6d4fa018748d965452921abef4a16bd9471f0471d6d14c03759fe49d
7
+ data.tar.gz: c051a4ad6f54a844b006cccb29e744e8b199dd7a9eddc755f173011b8a6b0858c3ddf3a58550684c048c5309c6c439ecec7234bcef6c977c280d3e9e7d88bea6
data/lib/stddtool.rb CHANGED
@@ -1,7 +1,11 @@
1
+ # encoding: utf-8
1
2
  # features/support/twitter_formatter.rb
2
3
  require 'rubygems'
3
4
  require 'json'
4
-
5
+ require 'ostruct'
6
+ require 'cucumber/formatter/io'
7
+ require 'gherkin/formatter/argument'
8
+ require 'base64'
5
9
 
6
10
  class STDDTool
7
11
 
@@ -9,13 +13,33 @@ require 'json'
9
13
  @buildnr = ENV['BUILD']
10
14
  @url = ENV['URL']
11
15
  @job = ENV['JOBNAME']
16
+ @proxy = ENV['http_proxy'] ? URI.parse('http://'+ENV['http_proxy']) : OpenStruct.new
12
17
  # Generate string as runId
13
18
  o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
14
19
  @runID = (0...50).map{ o[rand(o.length)] }.join
15
- puts @runID
16
- puts "Initiating STDDTool formatter"
20
+ @delayed_messages = []
21
+ p @runID
22
+ p "Initiating STDDTool formatter"
23
+ end
24
+
25
+ def embed(src, mime_type, label)
26
+ p "got embedding"
27
+ case(mime_type)
28
+ when /^image\/(png|gif|jpg|jpeg)/
29
+ buf = Base64.encode64(open(src) { |io| io.read })
30
+ embeddingObj=EmbeddingObj.new(mime_type,buf)
31
+ p "starts to post embedding"
32
+ postEmbedding(@scenarioID,embeddingObj)
33
+ p "posted embedding to scenario with id : #{@scenarioID}"
34
+ end
35
+ end
36
+
37
+ def puts(message)
38
+ @delayed_messages << message
17
39
  end
18
40
 
41
+
42
+
19
43
  def before_feature(feature)
20
44
  # puts feature.source_tag_names
21
45
  featureObj=FeatureObj.new(@job,@buildnr,feature.title,feature.description,feature.file,feature.source_tag_names,@runID)
@@ -31,6 +55,7 @@ require 'json'
31
55
  end
32
56
 
33
57
  def before_step(step)
58
+ @delayed_messages = []
34
59
  @start_time = Time.now
35
60
  end
36
61
 
@@ -39,8 +64,8 @@ require 'json'
39
64
  end
40
65
 
41
66
  def scenario_name(keyword, name, file_colon_line, source_indent)
42
- puts "scenario #{name}"
43
- scenarioObj=ScenarioObj.new(@featureID,keyword,name)
67
+ p "scenario #{name}"
68
+ scenarioObj=ScenarioObj.new(@featureID,keyword,name,@embedding)
44
69
  postScenario(scenarioObj)
45
70
  end
46
71
 
@@ -52,18 +77,14 @@ require 'json'
52
77
  step_name = step_match.format_args(lambda{|param| "*#{param}*"})
53
78
  # message = "#{step_name} #{status}"
54
79
  # puts keyword + " " + message
55
- stepObj=StepObj.new(keyword,step_name,status,exception, @duration)
80
+ stepObj=StepObj.new(keyword,step_name,status,exception, @duration,@delayed_messages)
56
81
  postStep(@scenarioID,stepObj)
57
82
  end
58
83
  end
59
84
 
60
- def step_name(keyword, step_match, status, source_indent, background, file_colon_line)
61
-
62
- end
63
-
64
85
  def postFeature(featureObj)
65
- uri = URI.parse(@url)
66
- http = Net::HTTP.new(uri.host, uri.port)
86
+ uri = URI.parse(@url)
87
+ http = Net::HTTP::Proxy(@proxy.host, @proxy.port).new(uri.host, uri.port)
67
88
  request = Net::HTTP::Post.new("/collectionapi/features")
68
89
  request.add_field('X-Auth-Token', '97f0ad9e24ca5e0408a269748d7fe0a0')
69
90
  request.body = featureObj.to_json
@@ -72,13 +93,13 @@ require 'json'
72
93
  when /20\d/
73
94
  #success
74
95
  else
75
- puts response.body
96
+ p response.body
76
97
  exit
77
98
  end
78
99
  parsed = JSON.parse(response.body)
79
100
 
80
101
  if parsed["error"]
81
- puts parsed["error"]
102
+ p parsed["error"]
82
103
  end
83
104
  @featureID = parsed["_id"]
84
105
 
@@ -90,14 +111,20 @@ require 'json'
90
111
  path = "/collectionapi/scenarios/#{scenarioID}"
91
112
  req = Net::HTTP::Put.new(path, initheader = { 'X-Auth-Token' => '97f0ad9e24ca5e0408a269748d7fe0a0'})
92
113
  req.body = stepObj.to_json
93
- response = Net::HTTP.new(uri.host, uri.port).start {|http| http.request(req) }
94
- # puts response.body
114
+ response = Net::HTTP::Proxy(@proxy.host, @proxy.port).new(uri.host, uri.port).start {|http| http.request(req) }
115
+ end
95
116
 
117
+ def postEmbedding(scenarioID,embeddingObj)
118
+ uri = URI.parse(@url)
119
+ path = "/collectionapi/scenarios/#{scenarioID}"
120
+ req = Net::HTTP::Put.new(path, initheader = { 'X-Auth-Token' => '97f0ad9e24ca5e0408a269748d7fe0a0'})
121
+ req.body = embeddingObj.to_json
122
+ response = Net::HTTP::Proxy(@proxy.host, @proxy.port).new(uri.host, uri.port).start {|http| http.request(req) }
96
123
  end
97
124
 
98
125
  def postScenario(scenarioObj)
99
126
  uri = URI.parse(@url)
100
- http = Net::HTTP.new(uri.host, uri.port)
127
+ http = Net::HTTP::Proxy(@proxy.host, @proxy.port).new(uri.host, uri.port)
101
128
  request = Net::HTTP::Post.new("/collectionapi/scenarios")
102
129
  request.add_field('X-Auth-Token', '97f0ad9e24ca5e0408a269748d7fe0a0')
103
130
  request.body = scenarioObj.to_json
@@ -143,28 +170,44 @@ end
143
170
 
144
171
 
145
172
  class StepObj
146
- def initialize(keyword, name, status,exception,duration)
173
+ def initialize(keyword, name, status,exception,duration,messages)
147
174
  @step_keyword=keyword
148
175
  @step_name=name
149
176
  @step_status=status
150
177
  @step_exception = exception
151
178
  @step_duration = duration
179
+ @step_messages = messages
152
180
  end
153
181
  def to_json
154
- {'$addToSet' => {'steps' =>{'keyword' => @step_keyword,
155
- 'name' => @step_name ,
156
- 'result' => {'status' =>@step_status,'error_message'=> @step_exception,'duration'=>@step_duration},
157
- }}}.to_json
182
+ {'$addToSet' =>
183
+ {'steps' =>{'keyword' => @step_keyword,
184
+ 'name' => @step_name ,
185
+ 'result' => {'status' =>@step_status,'error_message'=> @step_exception,'duration'=>@step_duration},
186
+ 'messages' => @step_messages
187
+ }
188
+ }
189
+ }.to_json
158
190
  end
159
191
  end
160
192
 
161
193
  class ScenarioObj
162
- def initialize(featureID,keyword, name)
194
+ def initialize(featureID,keyword, name,embedding)
163
195
  @feature_ID = featureID
164
196
  @scenario_keyword=keyword
165
197
  @scenario_name=name
198
+ @scenario_embedding = embedding
166
199
  end
167
200
  def to_json
168
- {'featureId' => @feature_ID,'keyword' => @scenario_keyword, 'name' => @scenario_name}.to_json
201
+ {'featureId' => @feature_ID,'keyword' => @scenario_keyword, 'name' => @scenario_name,'embedding' => @scenario_embedding }.to_json
169
202
  end
170
- end
203
+ end
204
+
205
+ class EmbeddingObj
206
+ def initialize(mime_type,data)
207
+ @mime_type = mime_type
208
+ @data=data
209
+ end
210
+ def to_json
211
+ {'$addToSet' =>{'embeddings' =>{'mime_type' => @mime_type,'data' => @data}}}.to_json
212
+ end
213
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stddtool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Danielsson