sbsm 1.3.4 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
File without changes
@@ -28,23 +28,37 @@
28
28
  require 'minitest/autorun'
29
29
  require 'sbsm/session'
30
30
  require 'sbsm/validator'
31
+ require 'sbsm/trans_handler'
32
+ require 'sbsm/app'
31
33
  require 'rack'
32
34
  require 'rack/test'
33
35
 
36
+ begin
37
+ require 'pry'
38
+ rescue LoadError
39
+ end
40
+
34
41
  class StubSessionUnknownUser
35
42
  end
36
- class StubSessionApp
37
- def unknown_user
38
- StubSessionUnknownUser.new
39
- end
40
- def login(session)
41
- false
42
- end
43
- def async(&block)
44
- block.call
45
- end
43
+ class StubSessionSession < SBSM::Session
46
44
  end
47
- class StubSessionValidator
45
+ class StubSessionApp < SBSM::App
46
+ attr_accessor :trans_handler, :validator
47
+ SESSION = StubSessionSession
48
+ def initialize(args = {})
49
+ args[:session_class] ||= StubSessionSession
50
+ args[:validator] ||= StubSessionValidator.new
51
+ args[:unknown_user] ||= StubSessionUnknownUser.new
52
+ super(args)
53
+ end
54
+ def login(session)
55
+ false
56
+ end
57
+ def async(&block)
58
+ block.call
59
+ end
60
+ end
61
+ class StubSessionValidator < SBSM::Validator
48
62
  def reset_errors; end
49
63
  def validate(key, value, mandatory=false)
50
64
  value
@@ -64,13 +78,11 @@ class StubSessionRequest < Rack::Request
64
78
  end
65
79
  end
66
80
  class StubSessionView
67
- def http_headers
68
- {
69
- "foo" => "bar"
70
- }
71
- end
72
81
  def initialize(foo, bar)
73
82
  end
83
+ def http_headers
84
+ { "foo" => "bar" }
85
+ end
74
86
  def to_html(context)
75
87
  '0123456789' * 3
76
88
  end
@@ -98,9 +110,8 @@ end
98
110
  class StubVolatileState < SBSM::State
99
111
  VOLATILE = true
100
112
  end
101
- class Session < SBSM::Session
113
+ class StubSessionWithView < SBSM::Session
102
114
  DEFAULT_STATE = StubSessionState
103
- DRB_LOAD_LIMIT = 10
104
115
  CAP_MAX_THRESHOLD = 3
105
116
  MAX_STATES = 3
106
117
  DEFAULT_FLAVOR = 'gcc'
@@ -109,17 +120,26 @@ class Session < SBSM::Session
109
120
  attr_writer :lookandfeel, :persistent_user_input
110
121
  attr_writer :active_state
111
122
  public :active_state
123
+ def initialize(args)
124
+ args[:app] ||= StubSessionApp.new
125
+ args[:validator] ||= StubSessionValidator.new
126
+ super(args)
127
+ persistent_user_input = {}
128
+ end
112
129
  end
113
130
  class StubSessionSession < SBSM::Session
114
131
  attr_accessor :lookandfeel
115
- attr_accessor :persistent_user_input
132
+ attr_accessor :persistent_user_input
116
133
  DEFAULT_FLAVOR = 'gcc'
117
134
  LF_FACTORY = {
118
135
  'gcc' => 'ccg',
119
136
  'sbb' => 'bbs',
120
137
  }
121
- def initialize(*args)
122
- super
138
+ def initialize(app: app)
139
+ args = { :app => app}
140
+ args[:app] ||= StubSessionApp.new
141
+ args[:validator] ||= StubSessionValidator.new
142
+ super(args)
123
143
  persistent_user_input = {}
124
144
  end
125
145
  def persistent_user_input(key)
@@ -130,16 +150,47 @@ end
130
150
  class TestSession < Minitest::Test
131
151
  include Rack::Test::Methods
132
152
  def setup
133
- @session = Session.new("test", StubSessionApp.new, StubSessionValidator.new)
153
+ @app = StubSessionApp.new(validator: StubSessionValidator.new,
154
+ unknown_user: StubSessionUnknownUser.new)
155
+ @session = StubSessionWithView.new(app: @app,
156
+ validator: StubSessionValidator.new,
157
+ unknown_user: StubSessionUnknownUser.new)
134
158
  @request = StubSessionRequest.new
135
159
  @state = StubSessionState.new(@session, nil)
136
160
  end
161
+ if true
162
+ def test_user_input
163
+ @request["foo"] = "bar"
164
+ @request["baz"] = "zuv"
165
+ # next line checks whether we did setup correctly the session
166
+ assert_equal(@session.validator.class, StubSessionValidator)
167
+ @session.process_rack(rack_request: @request)
168
+ assert_equal(['foo', 'bar'], @session.valid_values('foo'))
169
+ assert_equal("zuv", @session.user_input(:baz))
170
+ assert_equal("zuv", @session.user_input(:baz))
171
+ result = @session.user_input(:foo, :baz)
172
+ expected = {
173
+ :foo => 'bar',
174
+ :baz => 'zuv',
175
+ }
176
+ assert_equal(expected, result)
177
+ end
178
+ def test_persistent_user_input
179
+ @request["baz"] = "zuv"
180
+ @session.process_rack(rack_request: @request)
181
+ assert_equal("zuv", @session.persistent_user_input(:baz))
182
+ @session.process_rack(StubSessionRequest.new)
183
+ assert_equal("zuv", @session.persistent_user_input(:baz))
184
+ @request["baz"] = "bla"
185
+ @session.process_rack(rack_request: @request)
186
+ assert_equal("bla", @session.persistent_user_input(:baz))
187
+ end
137
188
  def test_user_input_hash
138
189
  @request["hash[1]"] = "4"
139
190
  @request["hash[2]"] = "5"
140
191
  @request.params["hash[3]"] = "6"
141
192
  @request.params['real_hash'] = {'1' => 'a', '2' => 'b'}
142
- @session.process(@request)
193
+ @session.process_rack(rack_request: @request)
143
194
  hash = @session.user_input(:hash)
144
195
  assert_equal(Hash, hash.class)
145
196
  assert_equal(3, hash.size)
@@ -152,7 +203,7 @@ class TestSession < Minitest::Test
152
203
  assert_equal("b", real_hash['2'])
153
204
  end
154
205
  def test_attended_states_store
155
- @session.process(@request)
206
+ @session.process_rack(rack_request: @request)
156
207
  state = @session.state
157
208
  expected = {
158
209
  state.object_id => state
@@ -163,16 +214,16 @@ class TestSession < Minitest::Test
163
214
  end
164
215
  def test_attended_states_cap_max
165
216
  req1 = StubSessionRequest.new
166
- @session.process(req1)
217
+ @session.process_rack(:rack_request =>req1)
167
218
  state1 = @session.state
168
219
  req2 = StubSessionRequest.new
169
220
  req2["event"] = "foo"
170
- @session.process(req2)
221
+ @session.process_rack(:rack_request =>req2)
171
222
  state2 = @session.state
172
223
  refute_equal(state1, state2)
173
224
  req3 = StubSessionRequest.new
174
225
  req3["event"] = :bar
175
- @session.process(req3)
226
+ @session.process_rack(:rack_request =>req3)
176
227
  state3 = @session.state
177
228
  refute_equal(state1, state3)
178
229
  refute_equal(state2, state3)
@@ -184,7 +235,7 @@ class TestSession < Minitest::Test
184
235
  assert_equal(attended, @session.attended_states)
185
236
  req4 = StubSessionRequest.new
186
237
  req4["event"] = :foobar
187
- @session.process(req4)
238
+ @session.process_rack(:rack_request =>req4)
188
239
  @session.cap_max_states
189
240
  state4 = @session.state
190
241
  refute_equal(state1, state4)
@@ -222,7 +273,7 @@ class TestSession < Minitest::Test
222
273
  }
223
274
  @session.active_state = @state
224
275
  # @request.params.store('state_id', state.object_id.next)
225
- @session.process(@request)
276
+ @session.process_rack(rack_request: @request)
226
277
  assert_equal(@state, @session.active_state)
227
278
  end
228
279
  def test_active_state3
@@ -237,8 +288,8 @@ class TestSession < Minitest::Test
237
288
  }
238
289
  @session.state = @state
239
290
  @request.params.store('state_id', state.object_id)
240
- @session.process(@request)
241
- assert_equal(state, @session.active_state)
291
+ @session.process_rack(rack_request: @request)
292
+ assert_equal(state.class, @session.active_state.class)
242
293
  end
243
294
  def test_volatile_state
244
295
  state = StubSessionState.new(@session, nil)
@@ -247,12 +298,12 @@ class TestSession < Minitest::Test
247
298
  @session.active_state = state
248
299
  @session.state = state
249
300
  @request.params.store('event', :volatile)
250
- newstate = @session.process(@request)
301
+ newstate = @session.process_rack(rack_request: @request)
251
302
  assert_equal(:volatile, @session.event)
252
303
  assert_equal(volatile, @session.state)
253
304
  assert_equal(state, @session.active_state)
254
305
  @request.params.store('event', :foo)
255
- newstate = @session.process(@request)
306
+ newstate = @session.process_rack(rack_request: @request)
256
307
  assert_equal(state.foo, @session.state)
257
308
  assert_equal(state.foo, @session.active_state)
258
309
  end
@@ -263,19 +314,19 @@ class TestSession < Minitest::Test
263
314
  assert_respond_to(@session, :delete)
264
315
  end
265
316
  def test_restore
266
- assert_instance_of(Session, @session.restore[:proxy])
317
+ assert_instance_of(NilClass, @session.restore[:proxy])
267
318
  end
268
319
  def test_user_input_no_request
269
320
  assert_nil(@session.user_input(:no_input))
270
321
  end
271
322
  def test_user_input_nil
272
- @session.process(@request)
323
+ @session.process_rack(rack_request: @request)
273
324
  assert_nil(@session.user_input(:no_input))
274
325
  end
275
326
  def test_user_input
276
327
  @request["foo"] = "bar"
277
328
  @request["baz"] = "zuv"
278
- @session.process(@request)
329
+ @session.process_rack(rack_request: @request)
279
330
  assert_equal("bar", @session.user_input(:foo))
280
331
  assert_equal("zuv", @session.user_input(:baz))
281
332
  assert_equal("zuv", @session.user_input(:baz))
@@ -290,7 +341,7 @@ class TestSession < Minitest::Test
290
341
  @request["hash[1]"] = "4"
291
342
  @request["hash[2]"] = "5"
292
343
  @request["hash[3]"] = "6"
293
- @session.process(@request)
344
+ @session.process_rack(rack_request: @request)
294
345
  hash = @session.user_input(:hash)
295
346
  assert_equal(Hash, hash.class)
296
347
  assert_equal(3, hash.size)
@@ -298,12 +349,6 @@ class TestSession < Minitest::Test
298
349
  assert_equal("5", hash["2"])
299
350
  assert_equal("6", hash["3"])
300
351
  end
301
- def test_http_headers
302
- expected = {
303
- "foo" => "bar"
304
- }
305
- assert_equal(expected, @session.http_headers)
306
- end
307
352
  def test_http_protocol
308
353
  assert_equal("http", @session.http_protocol)
309
354
  end
@@ -321,27 +366,14 @@ class TestSession < Minitest::Test
321
366
  end
322
367
  def test_persistent_user_input
323
368
  @request["baz"] = "zuv"
324
- @session.process(@request)
369
+ @session.process_rack(rack_request: @request)
325
370
  assert_equal("zuv", @session.persistent_user_input(:baz))
326
- @session.process(StubSessionRequest.new)
371
+ @session.process_rack(rack_request: StubSessionRequest.new)
327
372
  assert_equal("zuv", @session.persistent_user_input(:baz))
328
373
  @request["baz"] = "bla"
329
- @session.process(@request)
374
+ @session.process_rack(rack_request: @request)
330
375
  assert_equal("bla", @session.persistent_user_input(:baz))
331
376
  end
332
- def test_process
333
- state = StubSessionState.new(@session, nil)
334
- @session.attended_states = {
335
- state.object_id => state,
336
- }
337
- @session.state = @state
338
- expected = state.foo
339
- @request.params.store('state_id', state.object_id)
340
- @request.params.store('event', :foo)
341
- @session.process(@request)
342
- assert_equal(expected, @session.state)
343
- assert_equal(expected, @session.attended_states[expected.object_id])
344
- end
345
377
  def test_logout
346
378
  state = StubSessionBarState.new(@session, nil)
347
379
  @session.attended_states.store(state.object_id, state)
@@ -370,7 +402,7 @@ class TestSession < Minitest::Test
370
402
  assert_equal('en', lnf3.language) ## flavor does not change!
371
403
  end
372
404
  def test_lookandfeel2
373
- session = StubSessionSession.new("test", StubSessionApp.new, StubSessionValidator.new)
405
+ session = StubSessionSession.new(app: StubSessionApp.new)
374
406
  session.lookandfeel=nil
375
407
  session.persistent_user_input = {
376
408
  :flavor => 'gcc',
@@ -379,7 +411,7 @@ class TestSession < Minitest::Test
379
411
  assert_equal('gcc', session.flavor)
380
412
  end
381
413
  def test_lookandfeel3
382
- session = StubSessionSession.new("test", StubSessionApp.new, StubSessionValidator.new)
414
+ session = StubSessionSession.new(app: StubSessionApp.new)
383
415
  session.lookandfeel=nil
384
416
  lnf2 = session.lookandfeel
385
417
  session.persistent_user_input = {
@@ -388,3 +420,4 @@ class TestSession < Minitest::Test
388
420
  assert_equal('gcc', session.flavor)
389
421
  end
390
422
  end
423
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/lua
2
+ -------------------------------------------------------------
3
+ -- NOTE: each wrk thread has an independent Lua scripting
4
+ -- context and thus there will be one counter per thread
5
+
6
+ counter = 0
7
+ paths_to_visit = {"/de/page/feedback", "/de/page/about", "/"}
8
+ request = function()
9
+ counter = counter + 1
10
+ return wrk.format(nil, paths_to_visit[(counter % table.getn(paths_to_visit))+ 1])
11
+ end
12
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sbsm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masaomi Hatakeyama, Zeno R.R. Davatz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-12 00:00:00.000000000 Z
11
+ date: 2016-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -269,12 +269,9 @@ files:
269
269
  - data/uri.grammar
270
270
  - data/zone_uri.grammar
271
271
  - install.rb
272
- - lib/cgi/drbsession.rb
273
272
  - lib/sbsm.rb
274
273
  - lib/sbsm/app.rb
275
274
  - lib/sbsm/cgi.rb
276
- - lib/sbsm/drb.rb
277
- - lib/sbsm/drbserver.rb
278
275
  - lib/sbsm/exception.rb
279
276
  - lib/sbsm/index.rb
280
277
  - lib/sbsm/logger.rb
@@ -283,6 +280,7 @@ files:
283
280
  - lib/sbsm/lookandfeelwrapper.rb
284
281
  - lib/sbsm/redirector.rb
285
282
  - lib/sbsm/session.rb
283
+ - lib/sbsm/session_store.rb
286
284
  - lib/sbsm/state.rb
287
285
  - lib/sbsm/time.rb
288
286
  - lib/sbsm/trans_handler.rb
@@ -292,6 +290,7 @@ files:
292
290
  - lib/sbsm/version.rb
293
291
  - lib/sbsm/viralstate.rb
294
292
  - sbsm.gemspec
293
+ - test/config.ru
295
294
  - test/data/dos_file.txt
296
295
  - test/data/lnf_file.txt
297
296
  - test/data/mac_file.txt
@@ -299,7 +298,7 @@ files:
299
298
  - test/stub/cgi.rb
300
299
  - test/suite.rb
301
300
  - test/test_application.rb
302
- - test/test_drbserver.rb
301
+ - test/test_customized_app.rb
303
302
  - test/test_index.rb
304
303
  - test/test_logger.rb
305
304
  - test/test_lookandfeel.rb
@@ -308,6 +307,7 @@ files:
308
307
  - test/test_trans_handler.rb
309
308
  - test/test_user.rb
310
309
  - test/test_validator.rb
310
+ - test/wrk_visit.lua
311
311
  - usage-en.txt
312
312
  homepage: https://github.com/zdavatz/sbsm
313
313
  licenses:
@@ -334,6 +334,7 @@ signing_key:
334
334
  specification_version: 4
335
335
  summary: Application framework for state based session management from ywesee
336
336
  test_files:
337
+ - test/config.ru
337
338
  - test/data/dos_file.txt
338
339
  - test/data/lnf_file.txt
339
340
  - test/data/mac_file.txt
@@ -341,7 +342,7 @@ test_files:
341
342
  - test/stub/cgi.rb
342
343
  - test/suite.rb
343
344
  - test/test_application.rb
344
- - test/test_drbserver.rb
345
+ - test/test_customized_app.rb
345
346
  - test/test_index.rb
346
347
  - test/test_logger.rb
347
348
  - test/test_lookandfeel.rb
@@ -350,3 +351,4 @@ test_files:
350
351
  - test/test_trans_handler.rb
351
352
  - test/test_user.rb
352
353
  - test/test_validator.rb
354
+ - test/wrk_visit.lua
@@ -1,39 +0,0 @@
1
- # encoding: utf-8
2
- #--
3
- # DRbSession - CGI::Session session database manager using DRb.
4
- # Copyright (C) 2001 by Tietew. All Rights Reserved.
5
- #++
6
- require 'drb/drb'
7
- require 'sbsm/logger'
8
- class CGI
9
- class Session
10
- class DRbSession
11
- attr_reader :obj
12
- def initialize(session, option={})
13
- unless uri = option['drbsession_uri']
14
- raise ArgumentError, "drbsession_uri not specified"
15
- end
16
-
17
- unless DRb.thread
18
- DRb.start_service
19
- end
20
-
21
- holder = DRbObject.new(nil, uri)
22
- @obj = holder[session.session_id]
23
- end
24
-
25
- def restore
26
- @obj.restore
27
- end
28
- def update
29
- @obj.update
30
- end
31
- def close
32
- @obj.close
33
- end
34
- def delete
35
- @obj.delete
36
- end
37
- end
38
- end
39
- end