themis-checker-server 1.0.0 → 2.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.
- checksums.yaml +4 -4
- data/lib/themis/checker/server.rb +53 -17
- metadata +22 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f81106006a84660b0a4c4de2146921dffb385f96
|
4
|
+
data.tar.gz: c74978d6bf3d9c1db199958b154248b53abf78ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9271965c19aec3aea6781860f968c6e09ab9afd9b3f6f41b1cab171f966917113486577632ae0c23cc2571f86313c97645eda66eef004e497a680fa4950658c
|
7
|
+
data.tar.gz: 90f2aa21f00f8cbac2a9d09ae3340c5bd22ebf39261867e29b34e62305be26a0f120a2278431f697f76623e2b4f59c9221438bafc840fe1c9dee68feca5e9f9d
|
@@ -2,6 +2,9 @@ require 'logger'
|
|
2
2
|
require 'json'
|
3
3
|
require 'beaneater'
|
4
4
|
require 'themis/checker/result'
|
5
|
+
require 'base64'
|
6
|
+
require 'date'
|
7
|
+
require 'time_difference'
|
5
8
|
|
6
9
|
|
7
10
|
module Themis
|
@@ -22,35 +25,68 @@ module Themis
|
|
22
25
|
|
23
26
|
case job_data['operation']
|
24
27
|
when 'push'
|
25
|
-
|
28
|
+
metadata = job_data['metadata']
|
29
|
+
timestamp_created = DateTime.iso8601 metadata['timestamp']
|
30
|
+
timestamp_delivered = DateTime.now
|
31
|
+
|
32
|
+
status, updated_adjunct = self.internal_push(
|
26
33
|
job_data['endpoint'],
|
27
|
-
job_data['
|
28
|
-
job_data['
|
34
|
+
job_data['flag'],
|
35
|
+
Base64.decode64(job_data['adjunct']),
|
36
|
+
metadata
|
29
37
|
)
|
30
38
|
|
39
|
+
timestamp_processed = DateTime.now
|
40
|
+
|
31
41
|
job_result = {
|
32
42
|
operation: job_data['operation'],
|
33
43
|
status: status,
|
34
44
|
flag: job_data['flag'],
|
35
|
-
|
36
|
-
endpoint: job_data['endpoint']
|
45
|
+
adjunct: Base64.encode64(updated_adjunct)
|
37
46
|
}
|
38
47
|
|
39
|
-
@logger.info
|
48
|
+
@logger.info('PUSH flag `%s` /%d to `%s`@`%s` (%s) — status %s, adjunct `%s` [delivery %.2fs, processing %.2fs]' % [
|
49
|
+
job_data['flag'],
|
50
|
+
metadata['round'],
|
51
|
+
metadata['service_name'],
|
52
|
+
metadata['team_name'],
|
53
|
+
job_data['endpoint'],
|
54
|
+
Themis::Checker::Result.key(status),
|
55
|
+
job_result[:adjunct],
|
56
|
+
TimeDifference.between(timestamp_created, timestamp_delivered).in_seconds,
|
57
|
+
TimeDifference.between(timestamp_delivered, timestamp_processed).in_seconds
|
58
|
+
])
|
40
59
|
when 'pull'
|
60
|
+
metadata = job_data['metadata']
|
61
|
+
timestamp_created = DateTime.iso8601 metadata['timestamp']
|
62
|
+
timestamp_delivered = DateTime.now
|
63
|
+
|
41
64
|
status = self.internal_pull(
|
42
65
|
job_data['endpoint'],
|
43
|
-
job_data['
|
44
|
-
job_data['
|
66
|
+
job_data['flag'],
|
67
|
+
Base64.decode64(job_data['adjunct']),
|
68
|
+
job_data['metadata']
|
45
69
|
)
|
46
70
|
|
71
|
+
timestamp_processed = DateTime.now
|
72
|
+
|
47
73
|
job_result = {
|
48
74
|
operation: job_data['operation'],
|
49
75
|
request_id: job_data['request_id'],
|
50
76
|
status: status
|
51
77
|
}
|
52
78
|
|
53
|
-
@logger.info
|
79
|
+
@logger.info('PULL flag `%s` /%d from `%s`@`%s` (%s) with adjunct `%s` — status %s [delivery %.2fs, processing %.2fs]' % [
|
80
|
+
job_data['flag'],
|
81
|
+
metadata['round'],
|
82
|
+
metadata['service_name'],
|
83
|
+
metadata['team_name'],
|
84
|
+
job_data['endpoint'],
|
85
|
+
job_data['adjunct'],
|
86
|
+
Themis::Checker::Result.key(status),
|
87
|
+
TimeDifference.between(timestamp_created, timestamp_delivered).in_seconds,
|
88
|
+
TimeDifference.between(timestamp_delivered, timestamp_processed).in_seconds
|
89
|
+
])
|
54
90
|
else
|
55
91
|
@logger.warn 'Unknown job!'
|
56
92
|
end
|
@@ -70,11 +106,11 @@ module Themis
|
|
70
106
|
@logger.info 'Disconnected from beanstalk server'
|
71
107
|
end
|
72
108
|
|
73
|
-
def push(endpoint,
|
109
|
+
def push(endpoint, flag, adjunct, metadata)
|
74
110
|
raise NotImplementedError, 'Push flag logic not implemented!'
|
75
111
|
end
|
76
112
|
|
77
|
-
def pull(endpoint,
|
113
|
+
def pull(endpoint, flag, adjunct, metadata)
|
78
114
|
raise NotImplementedError, 'Pull flag logic not implemented!'
|
79
115
|
end
|
80
116
|
|
@@ -110,10 +146,10 @@ module Themis
|
|
110
146
|
logger
|
111
147
|
end
|
112
148
|
|
113
|
-
def internal_push(endpoint,
|
114
|
-
result,
|
149
|
+
def internal_push(endpoint, flag, adjunct, metadata)
|
150
|
+
result, updated_adjunct = Themis::Checker::Result::INTERNAL_ERROR, adjunct
|
115
151
|
begin
|
116
|
-
result,
|
152
|
+
result, updated_adjunct = self.push endpoint, flag, adjunct, metadata
|
117
153
|
rescue Interrupt
|
118
154
|
raise
|
119
155
|
rescue Exception => e
|
@@ -121,13 +157,13 @@ module Themis
|
|
121
157
|
e.backtrace.each { |line| @logger.error line }
|
122
158
|
end
|
123
159
|
|
124
|
-
return result,
|
160
|
+
return result, updated_adjunct
|
125
161
|
end
|
126
162
|
|
127
|
-
def internal_pull(endpoint,
|
163
|
+
def internal_pull(endpoint, flag, adjunct, metadata)
|
128
164
|
result = Themis::Checker::Result::INTERNAL_ERROR
|
129
165
|
begin
|
130
|
-
result = self.pull endpoint,
|
166
|
+
result = self.pull endpoint, flag, adjunct, metadata
|
131
167
|
rescue Interrupt
|
132
168
|
raise
|
133
169
|
rescue Exception => e
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: themis-checker-server
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Pyatkin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: beaneater
|
@@ -42,16 +42,30 @@ dependencies:
|
|
42
42
|
name: themis-checker-result
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 1.1.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: time_difference
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.4.2
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.4.2
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
description: Service checker base class for Themis contest checking system
|
84
|
-
email:
|
98
|
+
email: aspyatkin@gmail.com
|
85
99
|
executables: []
|
86
100
|
extensions: []
|
87
101
|
extra_rdoc_files: []
|
@@ -107,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
121
|
version: '0'
|
108
122
|
requirements: []
|
109
123
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.
|
124
|
+
rubygems_version: 2.5.1
|
111
125
|
signing_key:
|
112
126
|
specification_version: 4
|
113
127
|
summary: Themis::Checker::Server
|