vx-message 0.2.0.pre28

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d0ddd96f6b7dd6c7f567e72744e157d7b903a8fc
4
+ data.tar.gz: 0501bb91a68b5302d98541d0e3a6f8dfe9a975b2
5
+ SHA512:
6
+ metadata.gz: c603ffb87172d9a9c39a72855820e60d89062e302a50d5c18b000c54b97e45699637b6ea92b177660b66e3214a080a95a111fb89572a5fbc4ea9a3916ca80d70
7
+ data.tar.gz: 966c2136b83458090d19b4b9a8a7819d1104b849a1b14c747acad3d2e7d4a7840cc830c2eeca46539aec043b2bce02cf6119babed1ef04962a320675e3d4afa5
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ -fd
3
+ --order=rand
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in vx-message.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,276 @@
1
+ Copyright (c) 2013 Dmitry Galinsky
2
+
3
+ The GNU General Public License, Version 2, June 1991 (GPLv2)
4
+ ============================================================
5
+
6
+ > Copyright (C) 1989, 1991 Free Software Foundation, Inc.
7
+ > 59 Temple Place, Suite 330
8
+ > Boston, MA 02111-1307 USA
9
+
10
+ Everyone is permitted to copy and distribute verbatim copies of this license
11
+ document, but changing it is not allowed.
12
+
13
+
14
+ Preamble
15
+ --------
16
+
17
+ The licenses for most software are designed to take away your freedom to share
18
+ and change it. By contrast, the GNU General Public License is intended to
19
+ guarantee your freedom to share and change free software--to make sure the
20
+ software is free for all its users. This General Public License applies to most
21
+ of the Free Software Foundation's software and to any other program whose
22
+ authors commit to using it. (Some other Free Software Foundation software is
23
+ covered by the GNU Library General Public License instead.) You can apply it to
24
+ your programs, too.
25
+
26
+ When we speak of free software, we are referring to freedom, not price. Our
27
+ General Public Licenses are designed to make sure that you have the freedom to
28
+ distribute copies of free software (and charge for this service if you wish),
29
+ that you receive source code or can get it if you want it, that you can change
30
+ the software or use pieces of it in new free programs; and that you know you can
31
+ do these things.
32
+
33
+ To protect your rights, we need to make restrictions that forbid anyone to deny
34
+ you these rights or to ask you to surrender the rights. These restrictions
35
+ translate to certain responsibilities for you if you distribute copies of the
36
+ software, or if you modify it.
37
+
38
+ For example, if you distribute copies of such a program, whether gratis or for a
39
+ fee, you must give the recipients all the rights that you have. You must make
40
+ sure that they, too, receive or can get the source code. And you must show them
41
+ these terms so they know their rights.
42
+
43
+ We protect your rights with two steps: (1) copyright the software, and (2) offer
44
+ you this license which gives you legal permission to copy, distribute and/or
45
+ modify the software.
46
+
47
+ Also, for each author's protection and ours, we want to make certain that
48
+ everyone understands that there is no warranty for this free software. If the
49
+ software is modified by someone else and passed on, we want its recipients to
50
+ know that what they have is not the original, so that any problems introduced by
51
+ others will not reflect on the original authors' reputations.
52
+
53
+ Finally, any free program is threatened constantly by software patents. We wish
54
+ to avoid the danger that redistributors of a free program will individually
55
+ obtain patent licenses, in effect making the program proprietary. To prevent
56
+ this, we have made it clear that any patent must be licensed for everyone's free
57
+ use or not licensed at all.
58
+
59
+ The precise terms and conditions for copying, distribution and modification
60
+ follow.
61
+
62
+
63
+ Terms And Conditions For Copying, Distribution And Modification
64
+ ---------------------------------------------------------------
65
+ 0. This License applies to any program or other work which contains a notice
66
+ placed by the copyright holder saying it may be distributed under the terms
67
+ of this General Public License. The "Program", below, refers to any such
68
+ program or work, and a "work based on the Program" means either the Program
69
+ or any derivative work under copyright law: that is to say, a work
70
+ containing the Program or a portion of it, either verbatim or with
71
+ modifications and/or translated into another language. (Hereinafter,
72
+ translation is included without limitation in the term "modification".)
73
+ Each licensee is addressed as "you".
74
+
75
+ Activities other than copying, distribution and modification are not
76
+ covered by this License; they are outside its scope. The act of running the
77
+ Program is not restricted, and the output from the Program is covered only
78
+ if its contents constitute a work based on the Program (independent of
79
+ having been made by running the Program). Whether that is true depends on
80
+ what the Program does.
81
+
82
+ 1. You may copy and distribute verbatim copies of the Program's source code as
83
+ you receive it, in any medium, provided that you conspicuously and
84
+ appropriately publish on each copy an appropriate copyright notice and
85
+ disclaimer of warranty; keep intact all the notices that refer to this
86
+ License and to the absence of any warranty; and give any other recipients
87
+ of the Program a copy of this License along with the Program.
88
+
89
+ You may charge a fee for the physical act of transferring a copy, and you
90
+ may at your option offer warranty protection in exchange for a fee.
91
+
92
+ 2. You may modify your copy or copies of the Program or any portion of it,
93
+ thus forming a work based on the Program, and copy and distribute such
94
+ modifications or work under the terms of Section 1 above, provided that you
95
+ also meet all of these conditions:
96
+
97
+ a) You must cause the modified files to carry prominent notices stating
98
+ that you changed the files and the date of any change.
99
+
100
+ b) You must cause any work that you distribute or publish, that in whole
101
+ or in part contains or is derived from the Program or any part thereof,
102
+ to be licensed as a whole at no charge to all third parties under the
103
+ terms of this License.
104
+
105
+ c) If the modified program normally reads commands interactively when run,
106
+ you must cause it, when started running for such interactive use in the
107
+ most ordinary way, to print or display an announcement including an
108
+ appropriate copyright notice and a notice that there is no warranty (or
109
+ else, saying that you provide a warranty) and that users may
110
+ redistribute the program under these conditions, and telling the user
111
+ how to view a copy of this License. (Exception: if the Program itself
112
+ is interactive but does not normally print such an announcement, your
113
+ work based on the Program is not required to print an announcement.)
114
+
115
+ These requirements apply to the modified work as a whole. If identifiable
116
+ sections of that work are not derived from the Program, and can be
117
+ reasonably considered independent and separate works in themselves, then
118
+ this License, and its terms, do not apply to those sections when you
119
+ distribute them as separate works. But when you distribute the same
120
+ sections as part of a whole which is a work based on the Program, the
121
+ distribution of the whole must be on the terms of this License, whose
122
+ permissions for other licensees extend to the entire whole, and thus to
123
+ each and every part regardless of who wrote it.
124
+
125
+ Thus, it is not the intent of this section to claim rights or contest your
126
+ rights to work written entirely by you; rather, the intent is to exercise
127
+ the right to control the distribution of derivative or collective works
128
+ based on the Program.
129
+
130
+ In addition, mere aggregation of another work not based on the Program with
131
+ the Program (or with a work based on the Program) on a volume of a storage
132
+ or distribution medium does not bring the other work under the scope of
133
+ this License.
134
+
135
+ 3. You may copy and distribute the Program (or a work based on it, under
136
+ Section 2) in object code or executable form under the terms of Sections 1
137
+ and 2 above provided that you also do one of the following:
138
+
139
+ a) Accompany it with the complete corresponding machine-readable source
140
+ code, which must be distributed under the terms of Sections 1 and 2
141
+ above on a medium customarily used for software interchange; or,
142
+
143
+ b) Accompany it with a written offer, valid for at least three years, to
144
+ give any third party, for a charge no more than your cost of physically
145
+ performing source distribution, a complete machine-readable copy of the
146
+ corresponding source code, to be distributed under the terms of
147
+ Sections 1 and 2 above on a medium customarily used for software
148
+ interchange; or,
149
+
150
+ c) Accompany it with the information you received as to the offer to
151
+ distribute corresponding source code. (This alternative is allowed only
152
+ for noncommercial distribution and only if you received the program in
153
+ object code or executable form with such an offer, in accord with
154
+ Subsection b above.)
155
+
156
+ The source code for a work means the preferred form of the work for making
157
+ modifications to it. For an executable work, complete source code means all
158
+ the source code for all modules it contains, plus any associated interface
159
+ definition files, plus the scripts used to control compilation and
160
+ installation of the executable. However, as a special exception, the source
161
+ code distributed need not include anything that is normally distributed (in
162
+ either source or binary form) with the major components (compiler, kernel,
163
+ and so on) of the operating system on which the executable runs, unless
164
+ that component itself accompanies the executable.
165
+
166
+ If distribution of executable or object code is made by offering access to
167
+ copy from a designated place, then offering equivalent access to copy the
168
+ source code from the same place counts as distribution of the source code,
169
+ even though third parties are not compelled to copy the source along with
170
+ the object code.
171
+
172
+ 4. You may not copy, modify, sublicense, or distribute the Program except as
173
+ expressly provided under this License. Any attempt otherwise to copy,
174
+ modify, sublicense or distribute the Program is void, and will
175
+ automatically terminate your rights under this License. However, parties
176
+ who have received copies, or rights, from you under this License will not
177
+ have their licenses terminated so long as such parties remain in full
178
+ compliance.
179
+
180
+ 5. You are not required to accept this License, since you have not signed it.
181
+ However, nothing else grants you permission to modify or distribute the
182
+ Program or its derivative works. These actions are prohibited by law if you
183
+ do not accept this License. Therefore, by modifying or distributing the
184
+ Program (or any work based on the Program), you indicate your acceptance of
185
+ this License to do so, and all its terms and conditions for copying,
186
+ distributing or modifying the Program or works based on it.
187
+
188
+ 6. Each time you redistribute the Program (or any work based on the Program),
189
+ the recipient automatically receives a license from the original licensor
190
+ to copy, distribute or modify the Program subject to these terms and
191
+ conditions. You may not impose any further restrictions on the recipients'
192
+ exercise of the rights granted herein. You are not responsible for
193
+ enforcing compliance by third parties to this License.
194
+
195
+ 7. If, as a consequence of a court judgment or allegation of patent
196
+ infringement or for any other reason (not limited to patent issues),
197
+ conditions are imposed on you (whether by court order, agreement or
198
+ otherwise) that contradict the conditions of this License, they do not
199
+ excuse you from the conditions of this License. If you cannot distribute so
200
+ as to satisfy simultaneously your obligations under this License and any
201
+ other pertinent obligations, then as a consequence you may not distribute
202
+ the Program at all. For example, if a patent license would not permit
203
+ royalty-free redistribution of the Program by all those who receive copies
204
+ directly or indirectly through you, then the only way you could satisfy
205
+ both it and this License would be to refrain entirely from distribution of
206
+ the Program.
207
+
208
+ If any portion of this section is held invalid or unenforceable under any
209
+ particular circumstance, the balance of the section is intended to apply
210
+ and the section as a whole is intended to apply in other circumstances.
211
+
212
+ It is not the purpose of this section to induce you to infringe any patents
213
+ or other property right claims or to contest validity of any such claims;
214
+ this section has the sole purpose of protecting the integrity of the free
215
+ software distribution system, which is implemented by public license
216
+ practices. Many people have made generous contributions to the wide range
217
+ of software distributed through that system in reliance on consistent
218
+ application of that system; it is up to the author/donor to decide if he or
219
+ she is willing to distribute software through any other system and a
220
+ licensee cannot impose that choice.
221
+
222
+ This section is intended to make thoroughly clear what is believed to be a
223
+ consequence of the rest of this License.
224
+
225
+ 8. If the distribution and/or use of the Program is restricted in certain
226
+ countries either by patents or by copyrighted interfaces, the original
227
+ copyright holder who places the Program under this License may add an
228
+ explicit geographical distribution limitation excluding those countries, so
229
+ that distribution is permitted only in or among countries not thus excluded.
230
+ In such case, this License incorporates the limitation as if written in
231
+ the body of this License.
232
+
233
+ 9. The Free Software Foundation may publish revised and/or new versions of the
234
+ General Public License from time to time. Such new versions will be similar
235
+ in spirit to the present version, but may differ in detail to address new
236
+ problems or concerns.
237
+
238
+ Each version is given a distinguishing version number. If the Program
239
+ specifies a version number of this License which applies to it and "any
240
+ later version", you have the option of following the terms and conditions
241
+ either of that version or of any later version published by the Free
242
+ Software Foundation. If the Program does not specify a version number of
243
+ this License, you may choose any version ever published by the Free
244
+ Software Foundation.
245
+
246
+ 10. If you wish to incorporate parts of the Program into other free programs
247
+ whose distribution conditions are different, write to the author to ask for
248
+ permission. For software which is copyrighted by the Free Software
249
+ Foundation, write to the Free Software Foundation; we sometimes make
250
+ exceptions for this. Our decision will be guided by the two goals of
251
+ preserving the free status of all derivatives of our free software and of
252
+ promoting the sharing and reuse of software generally.
253
+
254
+
255
+ No Warranty
256
+ -----------
257
+
258
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
259
+ THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
260
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
261
+ PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
262
+ OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
263
+ MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
264
+ THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
265
+ PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
266
+ CORRECTION.
267
+
268
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
269
+ ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
270
+ THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
271
+ GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
272
+ USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
273
+ DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
274
+ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
275
+ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
276
+ SUCH DAMAGES.
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.require
4
+ require "bundler/gem_tasks"
5
+ require 'rspec/core/rake_task'
6
+
7
+ RSpec::Core::RakeTask.new(:spec)
8
+
9
+ desc "generate models from proto"
10
+ task :gen do
11
+ system %{ env BEEFCAKE_NAMESPACE="Vx::Message" protoc proto/messages.proto --beefcake_out lib/vx/message/ }
12
+ end
13
+
14
+ desc "generate models from proto and run specs"
15
+ task :default => [:gen, :spec]
16
+
17
+ desc "run travis build"
18
+ task :travis => :default
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAveiqzr0nxJA48fk/T7qFrODmdT94lvt7ontGLhqNT7Z+GbqL
3
+ t45F4/5BxNgyMbSQfaJw1sGMunQfjKRdWfuKUQp0y6bNhAjtnCnoVel3SMBaXE2r
4
+ 896GkhNXc1/lz1v/1T8blc/chVeKZvQT+hDvC/KECF/+vd7yL6NRloayZdv0ks7z
5
+ CwoIeeTfEu2hd3rXDELgoiM+AAEciYe08VuytFjbONy28Ey3SGHURN418FJrJHDs
6
+ 7B5x3P89glkSta1TY4JOQtoWuxza7ylS8G1k+ss+TDB+ET3sqjDe1mxosRAfqSA7
7
+ apEZK3ALbZru3nYd26x+CE84dvH7GiKoBl0TSQIDAQABAoIBAEEAgnaBCDufod4x
8
+ EhqYHWkvEbLQJtaG/ap/x2XAcN33+PGViH0rlYCUZq6Z0ZRx2YMnNrhLR4AKf0IE
9
+ gG9sScuzaIbMcUvgQnRRY9UENHASZttxOooegLE/LY+wI1j2hHrZPvfoTfLWI+lZ
10
+ Yf0WDrxoJgk30lnrFbp4jFSZhjaWmsm1XQ4htt9bfGOBle/gJ6UTr32wF0EyOpv4
11
+ erci1RSUzyDWz0q7Tjaq6SHlwQ2JwcLG0vnrZq+YnMJUwjLhC4JAMZEKF/61KnsM
12
+ zwR9nuOE2ZDI1xH5xAA+0pNkwzxWcqryoKBrOMatDa+7ZOJEobOiq+glqmoprov4
13
+ gXXR2IECgYEA+wP1SZM7E0WntQyPgRiZ7D9TSioV+x51RPw9Puw8KG3TuGOLqaMz
14
+ rMwscbToejiZFSv2lHGDbSfWsw76MYj+vK3RF5ed8Mxy3gSfVFxVzSD50efpJcVq
15
+ kV6n/ua3AJYGVbneaj56BljxHbxVvcyXXFGnaml8ICPJ2jyR8RE1848CgYEAwa4S
16
+ jgnmReY+Tuu7U0xd6Oo0X9tjkqkyyGq+stQ3I2OfYzmtQveFlWsfecnbCmEMylLy
17
+ nGVxYSiRNcigMoZ7eurgdmGD/O4mDG80Dy4PJ7lF8/8Xx701V7YjgGnII2/Vwp1k
18
+ vlR9xTJ5lVpANXqSYq1kwyeSPn1KLKt0E42VP6cCgYEA2l4OJCyOJuzgwbMkoET7
19
+ mrdYSNul9akAkbvxt+yhRPaOSglndXMBwGB6hYzA9ZqJKg7t2yOJFwuiTnFIHJG2
20
+ MgPwM1r1zoa9owFYbnZJOkNmsUHT5MUCOWakNS8Wos7gwfEJWVnyo9T6JUkzOgNi
21
+ 5bAvOXZ8wiUAM/efapzzV2cCgYBbKtY/F/fV1VBlE9+EkUDvPzdSG9IeGhj2cBC9
22
+ 2tjthppjOaYODLdLozYYvOSnWRGNN0hOSA37nv3jZEHMJrN/I4pvDu3zJCKy3bGS
23
+ p6qolzSPavdFpRGz7N9/Ncvoql7jkfT3BoyBQ4YpwGbTBZRccKQqnLjhQ1aj+jzU
24
+ a2PipwKBgQCCLuOrhO37UovMnmNrRzXnwu9C+VCB4oGf6QtjEehMx/J+6ehvSYub
25
+ lLOxeZQHzVkC3I6rVMbK1qx0t8Qnb+5jHRAkR4x/JaTojpZYqngdLrtY4/qLKJq7
26
+ 4aOLYjJyL3YB09g3r68wcnTUHbcZYj+Q7xT1Y/ntXNp3pdbYc47NUQ==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,5 @@
1
+ rvm:
2
+ - 2.0.0
3
+ before_script:
4
+ - "echo before_script"
5
+ script: "RAILS_ENV=test ls -1 && echo DONE!"
data/lib/vx/message.rb ADDED
@@ -0,0 +1,7 @@
1
+ require File.expand_path("../message/version", __FILE__)
2
+ require File.expand_path("../message/messages.pb.rb", __FILE__)
3
+
4
+ module Vx
5
+ module Message
6
+ end
7
+ end
@@ -0,0 +1,93 @@
1
+ ## Generated from proto/messages.proto for vx.message
2
+ require "beefcake"
3
+
4
+ module Vx
5
+ module Message
6
+
7
+ class PerformBuild
8
+ include Beefcake::Message
9
+
10
+
11
+ required :id, :uint64, 1
12
+ required :name, :string, 2
13
+ required :src, :string, 3
14
+ required :sha, :string, 4
15
+ optional :deploy_key, :string, 6
16
+ required :travis, :string, 7
17
+ required :branch, :string, 8
18
+
19
+ end
20
+
21
+ class PerformJob
22
+ include Beefcake::Message
23
+
24
+
25
+ required :id, :uint64, 1
26
+ required :name, :string, 2
27
+ required :job_id, :uint64, 7
28
+ required :before_script, :string, 8
29
+ required :script, :string, 9
30
+ required :after_script, :string, 11
31
+ repeated :matrix_keys, :string, 10
32
+
33
+ end
34
+
35
+ class BuildLog
36
+ include Beefcake::Message
37
+
38
+
39
+ required :build_id, :uint64, 1
40
+ required :log, :string, 2
41
+ required :tm, :uint64, 3
42
+
43
+ end
44
+
45
+ class JobLog
46
+ include Beefcake::Message
47
+
48
+
49
+ required :build_id, :uint64, 1
50
+ required :log, :string, 2
51
+ required :tm, :uint64, 3
52
+ required :job_id, :uint64, 5
53
+
54
+ end
55
+
56
+ class BuildStatus
57
+ include Beefcake::Message
58
+
59
+ module Status
60
+ INITIALIZED = 0
61
+ STARTED = 2
62
+ FINISHED = 3
63
+ BROKEN = 4
64
+ FAILED = 5
65
+ end
66
+
67
+ required :build_id, :uint64, 1
68
+ required :status, BuildStatus::Status, 2
69
+ required :tm, :uint64, 3
70
+ required :jobs_count, :uint32, 5
71
+
72
+ end
73
+
74
+ class JobStatus
75
+ include Beefcake::Message
76
+
77
+ module Status
78
+ INITIALIZED = 0
79
+ STARTED = 2
80
+ FINISHED = 3
81
+ BROKEN = 4
82
+ FAILED = 5
83
+ end
84
+
85
+ required :build_id, :uint64, 1
86
+ required :job_id, :uint64, 2
87
+ required :status, JobStatus::Status, 3
88
+ required :tm, :uint64, 4
89
+ repeated :matrix, :string, 6
90
+
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,148 @@
1
+ # coding: utf-8
2
+ require File.expand_path("../../message", __FILE__)
3
+
4
+ module Vx
5
+ module Message
6
+
7
+ class BuildInfo
8
+ class << self
9
+
10
+ def test_attributes(options = {})
11
+ {
12
+ build_id: 1,
13
+ commit_author: 'Автор по русски',
14
+ commit_message: 'Сообщение по русски',
15
+ }.merge(options)
16
+ end
17
+
18
+ def test_message(options = {})
19
+ new test_attributes(options)
20
+ end
21
+
22
+ end
23
+ end
24
+
25
+ class JobStatus
26
+ class << self
27
+
28
+ def test_attributes(options = {})
29
+ {
30
+ build_id: 1,
31
+ job_id: 2,
32
+ status: 0,
33
+ tm: 1376137604,
34
+ matrix: ["env:FOO = 1", "rvm:1.9.3"]
35
+ }.merge(options)
36
+ end
37
+
38
+ def test_message(options = {})
39
+ new test_attributes(options)
40
+ end
41
+
42
+ end
43
+ end
44
+
45
+ class BuildStatus
46
+ class << self
47
+
48
+ def test_attributes(options = {})
49
+ {
50
+ build_id: 1,
51
+ status: 0,
52
+ tm: 1376137604,
53
+ jobs_count: 1,
54
+ }.merge(options)
55
+ end
56
+
57
+ def test_message(options = {})
58
+ new test_attributes(options)
59
+ end
60
+
61
+ end
62
+ end
63
+
64
+ class JobLog
65
+ class << self
66
+
67
+ def test_attributes(options = {})
68
+ {
69
+ build_id: 1,
70
+ job_id: 2,
71
+ log: 'log',
72
+ tm: 1376137604,
73
+ }.merge(options)
74
+ end
75
+
76
+ def test_message(options = {})
77
+ new test_attributes(options)
78
+ end
79
+
80
+ end
81
+ end
82
+
83
+ class BuildLog
84
+ class << self
85
+
86
+ def test_attributes(options = {})
87
+ {
88
+ build_id: 1,
89
+ log: 'log',
90
+ tm: 1376137604,
91
+ }.merge(options)
92
+ end
93
+
94
+ def test_message(options = {})
95
+ new test_attributes(options)
96
+ end
97
+
98
+ end
99
+ end
100
+
101
+ class PerformJob
102
+ class << self
103
+
104
+ def test_attributes(options = {})
105
+ options.merge({
106
+ id: options[:id] || 1,
107
+ name: options[:name] || 'evrone/test-repo',
108
+ job_id: options[:job_id] || 2,
109
+ before_script: options[:before_script] || 'echo before_script',
110
+ script: options[:script] || 'echo script',
111
+ after_script: options[:after_script] || 'echo after_script',
112
+ matrix_keys: options[:matrix_keys] || %w{ rvm:2.0.0 }
113
+ })
114
+ end
115
+
116
+ def test_message(options = {})
117
+ new test_attributes(options)
118
+ end
119
+
120
+ end
121
+ end
122
+
123
+ class PerformBuild
124
+ class << self
125
+
126
+ def test_attributes(options = {})
127
+ key = File.read File.expand_path("../../../../fixtures/insecure_private_key", __FILE__)
128
+ travis = File.read File.expand_path("../../../../fixtures/travis.yml", __FILE__)
129
+ options.merge({
130
+ id: options[:id] || 1,
131
+ name: options[:name] || 'evrone/test-repo',
132
+ src: options[:src] || "git@github.com:evrone/ci-worker-test-repo.git",
133
+ sha: options[:sha] || "b665f90239563c030f1b280a434b3d84daeda1bd",
134
+ deploy_key: options[:deploy_key] || key,
135
+ travis: options[:travis] || travis,
136
+ branch: options[:branch] || "master"
137
+ })
138
+ end
139
+
140
+ def test_message(options = {})
141
+ new test_attributes(options)
142
+ end
143
+
144
+ end
145
+ end
146
+
147
+ end
148
+ end
@@ -0,0 +1,5 @@
1
+ module Vx
2
+ module Message
3
+ VERSION = "0.2.0.pre28"
4
+ end
5
+ end
@@ -0,0 +1,65 @@
1
+ package vx.message;
2
+
3
+ message PerformBuild {
4
+ required uint64 id = 1;
5
+ required string name = 2;
6
+ required string src = 3;
7
+ required string sha = 4;
8
+ optional string deploy_key = 6;
9
+ required string travis = 7;
10
+ required string branch = 8;
11
+ }
12
+
13
+ message PerformJob {
14
+ required uint64 id = 1;
15
+ required string name = 2;
16
+ required uint64 job_id = 7;
17
+ required string before_script = 8;
18
+ required string script = 9;
19
+ required string after_script = 11;
20
+ repeated string matrix_keys = 10;
21
+ }
22
+
23
+ message BuildLog {
24
+ required uint64 build_id = 1;
25
+ required string log = 2;
26
+ required uint64 tm = 3;
27
+ }
28
+
29
+ message JobLog {
30
+ required uint64 build_id = 1;
31
+ required string log = 2;
32
+ required uint64 tm = 3;
33
+ required uint64 job_id = 5;
34
+ }
35
+
36
+ message BuildStatus {
37
+ enum Status {
38
+ INITIALIZED = 0;
39
+ STARTED = 2;
40
+ FINISHED = 3;
41
+ BROKEN = 4;
42
+ FAILED = 5;
43
+ }
44
+
45
+ required uint64 build_id = 1;
46
+ required Status status = 2;
47
+ required uint64 tm = 3;
48
+ required uint32 jobs_count = 5;
49
+ }
50
+
51
+ message JobStatus {
52
+ enum Status {
53
+ INITIALIZED = 0;
54
+ STARTED = 2;
55
+ FINISHED = 3;
56
+ BROKEN = 4;
57
+ FAILED = 5;
58
+ }
59
+ required uint64 build_id = 1;
60
+ required uint64 job_id = 2;
61
+ required Status status = 3;
62
+ required uint64 tm = 4;
63
+ repeated string matrix = 6;
64
+ }
65
+
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+
4
+ describe Vx::Message do
5
+
6
+ %w{ PerformBuild PerformJob BuildLog JobLog BuildStatus JobStatus }.each do |klass|
7
+
8
+ context "#{klass}" do
9
+
10
+ let(:inst) { described_class.const_get klass }
11
+ subject { inst.test_message }
12
+
13
+ it "should be valid" do
14
+ expect(subject.validate!).to be_true
15
+ end
16
+
17
+ it "should be successfuly serialized/deserialized" do
18
+ bytes = subject.encode
19
+ obj = described_class.const_get(klass).decode(bytes)
20
+ expect(obj.validate!).to be_true
21
+ expect(obj).to eq subject
22
+ end
23
+
24
+ if klass == 'JobStatus'
25
+ it "should have matrix" do
26
+ expect(subject.matrix).to eq ["env:FOO = 1", "rvm:1.9.3"]
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,5 @@
1
+ require 'rspec/autorun'
2
+ require File.expand_path('../../lib/vx/message/testing', __FILE__)
3
+
4
+ RSpec.configure do |c|
5
+ end
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'vx/message/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "vx-message"
8
+ spec.version = Vx::Message::VERSION
9
+ spec.authors = ["Dmitry Galinsky"]
10
+ spec.email = ["dima.exe@gmail.com"]
11
+ spec.description = %q{ Evrone CI messages }
12
+ spec.summary = %q{ Evrone CI message }
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency 'beefcake', '= 0.3.7'
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vx-message
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0.pre28
5
+ platform: ruby
6
+ authors:
7
+ - Dmitry Galinsky
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: beefcake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.3.7
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.3.7
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: ' Evrone CI messages '
70
+ email:
71
+ - dima.exe@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - .rspec
78
+ - Gemfile
79
+ - LICENSE.txt
80
+ - Rakefile
81
+ - fixtures/insecure_private_key
82
+ - fixtures/travis.yml
83
+ - lib/vx/message.rb
84
+ - lib/vx/message/messages.pb.rb
85
+ - lib/vx/message/testing.rb
86
+ - lib/vx/message/version.rb
87
+ - proto/messages.proto
88
+ - spec/lib/message_spec.rb
89
+ - spec/spec_helper.rb
90
+ - vx-message.gemspec
91
+ homepage: ''
92
+ licenses:
93
+ - MIT
94
+ metadata: {}
95
+ post_install_message:
96
+ rdoc_options: []
97
+ require_paths:
98
+ - lib
99
+ required_ruby_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>'
107
+ - !ruby/object:Gem::Version
108
+ version: 1.3.1
109
+ requirements: []
110
+ rubyforge_project:
111
+ rubygems_version: 2.1.11
112
+ signing_key:
113
+ specification_version: 4
114
+ summary: Evrone CI message
115
+ test_files:
116
+ - spec/lib/message_spec.rb
117
+ - spec/spec_helper.rb