stark 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -165,6 +165,93 @@ module UserStorage
165
165
  raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'add failed: unknown result')
166
166
  end
167
167
 
168
+ def user_status()
169
+ send_user_status()
170
+ return recv_user_status()
171
+ end
172
+
173
+ def send_user_status()
174
+ send_message('user_status', User_status_args)
175
+ end
176
+
177
+ def recv_user_status()
178
+ result = receive_message(User_status_result)
179
+ return result.success unless result.success.nil?
180
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'user_status failed: unknown result')
181
+ end
182
+
183
+ def set_user_status(stat)
184
+ send_set_user_status(stat)
185
+ recv_set_user_status()
186
+ end
187
+
188
+ def send_set_user_status(stat)
189
+ send_message('set_user_status', Set_user_status_args, :stat => stat)
190
+ end
191
+
192
+ def recv_set_user_status()
193
+ result = receive_message(Set_user_status_result)
194
+ return
195
+ end
196
+
197
+ def user_relationship()
198
+ send_user_relationship()
199
+ return recv_user_relationship()
200
+ end
201
+
202
+ def send_user_relationship()
203
+ send_message('user_relationship', User_relationship_args)
204
+ end
205
+
206
+ def recv_user_relationship()
207
+ result = receive_message(User_relationship_result)
208
+ return result.success unless result.success.nil?
209
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'user_relationship failed: unknown result')
210
+ end
211
+
212
+ def set_user_relationship(rel)
213
+ send_set_user_relationship(rel)
214
+ recv_set_user_relationship()
215
+ end
216
+
217
+ def send_set_user_relationship(rel)
218
+ send_message('set_user_relationship', Set_user_relationship_args, :rel => rel)
219
+ end
220
+
221
+ def recv_set_user_relationship()
222
+ result = receive_message(Set_user_relationship_result)
223
+ return
224
+ end
225
+
226
+ def user_friends()
227
+ send_user_friends()
228
+ return recv_user_friends()
229
+ end
230
+
231
+ def send_user_friends()
232
+ send_message('user_friends', User_friends_args)
233
+ end
234
+
235
+ def recv_user_friends()
236
+ result = receive_message(User_friends_result)
237
+ return result.success unless result.success.nil?
238
+ raise ::Thrift::ApplicationException.new(::Thrift::ApplicationException::MISSING_RESULT, 'user_friends failed: unknown result')
239
+ end
240
+
241
+ def set_user_friends(fr)
242
+ send_set_user_friends(fr)
243
+ recv_set_user_friends()
244
+ end
245
+
246
+ def send_set_user_friends(fr)
247
+ send_message('set_user_friends', Set_user_friends_args, :fr => fr)
248
+ end
249
+
250
+ def recv_set_user_friends()
251
+ result = receive_message(Set_user_friends_result)
252
+ return
253
+ end
254
+
168
255
  end
169
256
 
170
257
  class Processor
@@ -250,6 +337,48 @@ module UserStorage
250
337
  write_result(result, oprot, 'add', seqid)
251
338
  end
252
339
 
340
+ def process_user_status(seqid, iprot, oprot)
341
+ args = read_args(iprot, User_status_args)
342
+ result = User_status_result.new()
343
+ result.success = @handler.user_status()
344
+ write_result(result, oprot, 'user_status', seqid)
345
+ end
346
+
347
+ def process_set_user_status(seqid, iprot, oprot)
348
+ args = read_args(iprot, Set_user_status_args)
349
+ result = Set_user_status_result.new()
350
+ @handler.set_user_status(args.stat)
351
+ write_result(result, oprot, 'set_user_status', seqid)
352
+ end
353
+
354
+ def process_user_relationship(seqid, iprot, oprot)
355
+ args = read_args(iprot, User_relationship_args)
356
+ result = User_relationship_result.new()
357
+ result.success = @handler.user_relationship()
358
+ write_result(result, oprot, 'user_relationship', seqid)
359
+ end
360
+
361
+ def process_set_user_relationship(seqid, iprot, oprot)
362
+ args = read_args(iprot, Set_user_relationship_args)
363
+ result = Set_user_relationship_result.new()
364
+ @handler.set_user_relationship(args.rel)
365
+ write_result(result, oprot, 'set_user_relationship', seqid)
366
+ end
367
+
368
+ def process_user_friends(seqid, iprot, oprot)
369
+ args = read_args(iprot, User_friends_args)
370
+ result = User_friends_result.new()
371
+ result.success = @handler.user_friends()
372
+ write_result(result, oprot, 'user_friends', seqid)
373
+ end
374
+
375
+ def process_set_user_friends(seqid, iprot, oprot)
376
+ args = read_args(iprot, Set_user_friends_args)
377
+ result = Set_user_friends_result.new()
378
+ @handler.set_user_friends(args.fr)
379
+ write_result(result, oprot, 'set_user_friends', seqid)
380
+ end
381
+
253
382
  end
254
383
 
255
384
  # HELPER FUNCTIONS AND STRUCTURES
@@ -606,5 +735,191 @@ module UserStorage
606
735
  ::Thrift::Struct.generate_accessors self
607
736
  end
608
737
 
738
+ class User_status_args
739
+ include ::Thrift::Struct, ::Thrift::Struct_Union
740
+
741
+ FIELDS = {
742
+
743
+ }
744
+
745
+ def struct_fields; FIELDS; end
746
+
747
+ def validate
748
+ end
749
+
750
+ ::Thrift::Struct.generate_accessors self
751
+ end
752
+
753
+ class User_status_result
754
+ include ::Thrift::Struct, ::Thrift::Struct_Union
755
+ SUCCESS = 0
756
+
757
+ FIELDS = {
758
+ SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => UserStatus}
759
+ }
760
+
761
+ def struct_fields; FIELDS; end
762
+
763
+ def validate
764
+ end
765
+
766
+ ::Thrift::Struct.generate_accessors self
767
+ end
768
+
769
+ class Set_user_status_args
770
+ include ::Thrift::Struct, ::Thrift::Struct_Union
771
+ STAT = 1
772
+
773
+ FIELDS = {
774
+ STAT => {:type => ::Thrift::Types::STRUCT, :name => 'stat', :class => UserStatus}
775
+ }
776
+
777
+ def struct_fields; FIELDS; end
778
+
779
+ def validate
780
+ end
781
+
782
+ ::Thrift::Struct.generate_accessors self
783
+ end
784
+
785
+ class Set_user_status_result
786
+ include ::Thrift::Struct, ::Thrift::Struct_Union
787
+
788
+ FIELDS = {
789
+
790
+ }
791
+
792
+ def struct_fields; FIELDS; end
793
+
794
+ def validate
795
+ end
796
+
797
+ ::Thrift::Struct.generate_accessors self
798
+ end
799
+
800
+ class User_relationship_args
801
+ include ::Thrift::Struct, ::Thrift::Struct_Union
802
+
803
+ FIELDS = {
804
+
805
+ }
806
+
807
+ def struct_fields; FIELDS; end
808
+
809
+ def validate
810
+ end
811
+
812
+ ::Thrift::Struct.generate_accessors self
813
+ end
814
+
815
+ class User_relationship_result
816
+ include ::Thrift::Struct, ::Thrift::Struct_Union
817
+ SUCCESS = 0
818
+
819
+ FIELDS = {
820
+ SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => UserRelationship}
821
+ }
822
+
823
+ def struct_fields; FIELDS; end
824
+
825
+ def validate
826
+ end
827
+
828
+ ::Thrift::Struct.generate_accessors self
829
+ end
830
+
831
+ class Set_user_relationship_args
832
+ include ::Thrift::Struct, ::Thrift::Struct_Union
833
+ REL = 1
834
+
835
+ FIELDS = {
836
+ REL => {:type => ::Thrift::Types::STRUCT, :name => 'rel', :class => UserRelationship}
837
+ }
838
+
839
+ def struct_fields; FIELDS; end
840
+
841
+ def validate
842
+ end
843
+
844
+ ::Thrift::Struct.generate_accessors self
845
+ end
846
+
847
+ class Set_user_relationship_result
848
+ include ::Thrift::Struct, ::Thrift::Struct_Union
849
+
850
+ FIELDS = {
851
+
852
+ }
853
+
854
+ def struct_fields; FIELDS; end
855
+
856
+ def validate
857
+ end
858
+
859
+ ::Thrift::Struct.generate_accessors self
860
+ end
861
+
862
+ class User_friends_args
863
+ include ::Thrift::Struct, ::Thrift::Struct_Union
864
+
865
+ FIELDS = {
866
+
867
+ }
868
+
869
+ def struct_fields; FIELDS; end
870
+
871
+ def validate
872
+ end
873
+
874
+ ::Thrift::Struct.generate_accessors self
875
+ end
876
+
877
+ class User_friends_result
878
+ include ::Thrift::Struct, ::Thrift::Struct_Union
879
+ SUCCESS = 0
880
+
881
+ FIELDS = {
882
+ SUCCESS => {:type => ::Thrift::Types::STRUCT, :name => 'success', :class => UserFriends}
883
+ }
884
+
885
+ def struct_fields; FIELDS; end
886
+
887
+ def validate
888
+ end
889
+
890
+ ::Thrift::Struct.generate_accessors self
891
+ end
892
+
893
+ class Set_user_friends_args
894
+ include ::Thrift::Struct, ::Thrift::Struct_Union
895
+ FR = 1
896
+
897
+ FIELDS = {
898
+ FR => {:type => ::Thrift::Types::STRUCT, :name => 'fr', :class => UserFriends}
899
+ }
900
+
901
+ def struct_fields; FIELDS; end
902
+
903
+ def validate
904
+ end
905
+
906
+ ::Thrift::Struct.generate_accessors self
907
+ end
908
+
909
+ class Set_user_friends_result
910
+ include ::Thrift::Struct, ::Thrift::Struct_Union
911
+
912
+ FIELDS = {
913
+
914
+ }
915
+
916
+ def struct_fields; FIELDS; end
917
+
918
+ def validate
919
+ end
920
+
921
+ ::Thrift::Struct.generate_accessors self
922
+ end
923
+
609
924
  end
610
925
 
data/test/profile.thrift CHANGED
@@ -4,6 +4,24 @@ struct UserProfile {
4
4
  3: string blurb
5
5
  }
6
6
 
7
+ enum MaritalStatus {
8
+ SINGLE
9
+ MARRIED
10
+ DIVORCED
11
+ UPSIDEDOWN
12
+ ITS_COMPLICATED
13
+ }
14
+
15
+ struct UserStatus {
16
+ 1: UserProfile profile,
17
+ 2: bool active
18
+ }
19
+
20
+ struct UserRelationship {
21
+ 1: i32 user,
22
+ 2: MaritalStatus status
23
+ }
24
+
7
25
  enum Status {
8
26
  ON
9
27
  OFF
@@ -11,6 +29,11 @@ enum Status {
11
29
  ALIVE
12
30
  }
13
31
 
32
+ struct UserFriends {
33
+ 1: i32 user,
34
+ 2: list<i32> friends
35
+ }
36
+
14
37
  exception RockTooHard {
15
38
  1: i32 volume
16
39
  }
@@ -26,6 +49,12 @@ service UserStorage {
26
49
  Status last_status(),
27
50
  i32 volume_up() throws (1: RockTooHard exc),
28
51
  oneway void make_bitcoins(),
29
- i32 add(1: i32 a, 2: i32 b)
52
+ i32 add(1: i32 a, 2: i32 b),
53
+ UserStatus user_status(),
54
+ void set_user_status(1: UserStatus stat),
55
+ UserRelationship user_relationship(),
56
+ void set_user_relationship(1: UserRelationship rel)
57
+ UserFriends user_friends(),
58
+ void set_user_friends(1: UserFriends fr)
30
59
  }
31
60
 
data/test/test_client.rb CHANGED
@@ -35,9 +35,11 @@ class TestClient < Test::Unit::TestCase
35
35
  @last_list = nil
36
36
  @last_status = nil
37
37
  @n = n
38
+ @user_status = nil
39
+ @user_relationship = nil
38
40
  end
39
41
 
40
- attr_accessor :last_map, :last_list, :last_status
42
+ attr_accessor :last_map, :last_list, :last_status, :user_status
41
43
 
42
44
  def store(obj)
43
45
  @users[obj.uid] = obj
@@ -70,6 +72,20 @@ class TestClient < Test::Unit::TestCase
70
72
  def add(a,b)
71
73
  a + b
72
74
  end
75
+
76
+ def set_user_status(s)
77
+ @user_status = s
78
+ end
79
+
80
+ attr_accessor :user_relationship
81
+ def set_user_relationship(rel)
82
+ @user_relationship = rel
83
+ end
84
+
85
+ attr_accessor :user_friends
86
+ def set_user_friends(fr)
87
+ @user_friends = fr
88
+ end
73
89
  end
74
90
 
75
91
  def test_store_and_retrieve
@@ -236,4 +252,118 @@ class TestClient < Test::Unit::TestCase
236
252
 
237
253
  st.join
238
254
  end
255
+
256
+ def test_read_struct_in_a_struct
257
+ st = Thread.new do
258
+ @server.process @server_p, @server_p
259
+ end
260
+
261
+ prof = UserProfile.new 'uid' => 0, 'name' => 'root', 'blurb' => 'god'
262
+ stat = UserStatus.new 'profile' => prof, 'active' => true
263
+
264
+ @handler.user_status = stat
265
+
266
+ status = @client.user_status
267
+
268
+ assert_equal true, status.active
269
+
270
+ prof = status.profile
271
+
272
+ assert_equal 0, prof.uid
273
+ assert_equal "root", prof.name
274
+ assert_equal "god", prof.blurb
275
+
276
+ st.join
277
+ end
278
+
279
+ def test_write_struct_in_a_struct
280
+ st = Thread.new do
281
+ @server.process @server_p, @server_p
282
+ end
283
+
284
+ prof = @n::UserProfile.new 'uid' => 0, 'name' => 'root', 'blurb' => 'god'
285
+ stat = @n::UserStatus.new 'profile' => prof, 'active' => true
286
+
287
+ @client.set_user_status stat
288
+
289
+ status = @handler.user_status
290
+
291
+ assert_equal true, status.active
292
+
293
+ prof = status.profile
294
+
295
+ assert_equal 0, prof.uid
296
+ assert_equal "root", prof.name
297
+ assert_equal "god", prof.blurb
298
+
299
+ st.join
300
+ end
301
+
302
+ def test_read_enum_in_struct
303
+ st = Thread.new do
304
+ @server.process @server_p, @server_p
305
+ end
306
+
307
+ stat = UserRelationship.new 'user' => 0, 'status' => 4
308
+
309
+ @handler.user_relationship = stat
310
+
311
+ rel = @client.user_relationship
312
+
313
+ assert_equal 0, rel.user
314
+ assert_equal :ITS_COMPLICATED, rel.status
315
+
316
+ st.join
317
+ end
318
+
319
+ def test_write_enum_in_struct
320
+ st = Thread.new do
321
+ @server.process @server_p, @server_p
322
+ end
323
+
324
+ stat = @n::UserRelationship.new 'user' => 0, 'status' => :ITS_COMPLICATED
325
+
326
+ @client.set_user_relationship stat
327
+
328
+ rel = @handler.user_relationship
329
+
330
+ assert_equal 0, rel.user
331
+ assert_equal 4, rel.status
332
+
333
+ st.join
334
+ end
335
+
336
+ def test_read_list_in_struct
337
+ st = Thread.new do
338
+ @server.process @server_p, @server_p
339
+ end
340
+
341
+ stat = UserFriends.new 'user' => 0, 'friends' => [4,8,47]
342
+
343
+ @handler.user_friends = stat
344
+
345
+ rel = @client.user_friends
346
+
347
+ assert_equal 0, rel.user
348
+ assert_equal [4,8,47], rel.friends
349
+
350
+ st.join
351
+ end
352
+
353
+ def test_write_list_in_struct
354
+ st = Thread.new do
355
+ @server.process @server_p, @server_p
356
+ end
357
+
358
+ stat = @n::UserFriends.new 'user' => 0, 'friends' => [4,8,47]
359
+
360
+ @client.set_user_friends stat
361
+
362
+ rel = @handler.user_friends
363
+
364
+ assert_equal 0, rel.user
365
+ assert_equal [4,8,47], rel.friends
366
+
367
+ st.join
368
+ end
239
369
  end
data/test/test_parser.rb CHANGED
@@ -138,6 +138,70 @@ service Foo {
138
138
  assert_field o.functions[0].throws.first, 1, "i32", "code"
139
139
  end
140
140
 
141
+ def test_include
142
+ o = parse <<-EOM
143
+ include "test/blah.thrift"
144
+
145
+ EOM
146
+
147
+ assert_equal "test/blah.thrift", o.first.path
148
+ end
149
+
150
+ def test_include_expanded
151
+ o = parse <<-EOM
152
+ include "test/blah.thrift"
153
+
154
+ EOM
155
+
156
+ o = Stark::Parser.expand o
157
+
158
+ assert_equal "Blah", o.first.name
159
+ assert_equal ["FOO", "BAR", "BAZ"], o.first.values
160
+ end
161
+
162
+ def test_include_to_include
163
+ o = parse <<-EOM
164
+ include "test/include_blah.thrift"
165
+
166
+ EOM
167
+
168
+ o = Stark::Parser.expand o
169
+
170
+ assert_equal "Blah", o.first.name
171
+ assert_equal ["FOO", "BAR", "BAZ"], o.first.values
172
+ end
173
+
174
+ def test_ast
175
+ parser = Stark::Parser.new <<-EOM
176
+ include "test/include_blah.thrift"
177
+ EOM
178
+
179
+ o = parser.ast
180
+
181
+ assert_equal "Blah", o.first.name
182
+ assert_equal ["FOO", "BAR", "BAZ"], o.first.values
183
+ end
184
+
185
+ def test_s_ast
186
+ o = Stark::Parser.ast <<-EOM
187
+ include "test/include_blah.thrift"
188
+ EOM
189
+
190
+ assert_equal "Blah", o.first.name
191
+ assert_equal ["FOO", "BAR", "BAZ"], o.first.values
192
+ end
193
+
194
+ def test_namespace
195
+ o = parse <<-EOM
196
+ namespace rb Blah
197
+ EOM
198
+
199
+ ns = o.first
200
+
201
+ assert_equal "rb", ns.lang
202
+ assert_equal "Blah", ns.namespace
203
+ end
204
+
141
205
  def test_spec
142
206
  data = File.read "test/ThriftSpec.thrift"
143
207
 
data/test/test_ruby.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'test/unit'
2
+ require 'stark'
3
+ require 'stark/ruby'
4
+
5
+ class TestRuby < Test::Unit::TestCase
6
+ def test_namespace
7
+ ast = Stark::Parser.ast <<-EOM
8
+ namespace rb Blah
9
+ enum Status {
10
+ DEAD
11
+ ALIVE
12
+ }
13
+ EOM
14
+
15
+ stream = StringIO.new
16
+ ruby = Stark::Ruby.new stream
17
+
18
+ ruby.run ast
19
+
20
+ ns = Module.new
21
+
22
+ ns.module_eval stream.string
23
+
24
+ assert ns::Blah
25
+ assert ns::Blah::Enum_Status
26
+ end
27
+ end