sbsm 1.3.4 → 1.3.5

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.
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