optimus_prime 1.1.0 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca7a1700d4761d1d32247a3f77b1957b19b23ad8
4
- data.tar.gz: b3f3246cb92d0e6ea767b2f5095614f137373a65
3
+ metadata.gz: 70074643332d2f2a130569b35239fefac9062280
4
+ data.tar.gz: b62db5a9db6fc8eb02ad217d8545350a86ba9f4f
5
5
  SHA512:
6
- metadata.gz: c4ef7ea8befd7aee9f93b45215b3fae78d66fecfa4ad4ab55e8240b89f4db4a4c1512131aba18888287abd61c919b5f9861624538fb957e27cb9eba25412a99b
7
- data.tar.gz: 98739ef0b9849e864d085541e194d8ea22f7dcd19551939b6efd78537df149bef6b1171748b0436f75baf68d995f4bbfbb9ea3bbd31ef80ed61a60c6625e2053
6
+ metadata.gz: b2c5184afdfb721f2c54895c36435ba6d8bab90e216ae1aef9236edbc3f49c0704a9ae47135f19f476ea28d62569168762614019be2f3d2802a8515954843dc8
7
+ data.tar.gz: 1416cefe5dce5c950357f73f6e61b9ec02a0f92a49f04762bb020bb61960e7790b193aa98e6a811d5ff512ad893a20104e231fb126a2b298ae7b40d7eed406b1
data/README.md CHANGED
@@ -111,6 +111,25 @@ get/i-am-not-primed: {
111
111
  }
112
112
  ```
113
113
 
114
+ ## Counting the number of requests made for an endpoint (GET and POST)
115
+ ```ruby
116
+ op.prime('your/endpoint')
117
+ Faraday.get("http://localhost:7002/get/your/endpoint")
118
+ op.count('your/endpoint') #=> 1
119
+ ```
120
+
121
+ ## Get the requests made to an endpoint
122
+ ```ruby
123
+ # GET Requests
124
+ op.prime('your/endpoint')
125
+ Faraday.get("http://localhost:7002/get/your/endpoint")
126
+ op.count('your/endpoint') #=> ["method" => "GET", "body" => ""]
127
+
128
+ # POST Requests
129
+ op.prime('your/endpoint')
130
+ Faraday.post("http://localhost:7002/get/your/endpoint", {some: "data"})
131
+ op.count('your/endpoint') #=> ["method" => "GET", "body" => "some=data"]
132
+ ```
114
133
 
115
134
  ## TODO
116
135
  * Move server initialisation into rake task in order to prevent it from initialising
@@ -5,10 +5,16 @@ require "json"
5
5
  module OptimusPrime
6
6
 
7
7
  class Server < ::Sinatra::Base
8
+ before do
9
+ content_type :json
10
+ headers 'Access-Control-Allow-Origin' => '*',
11
+ 'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST']
12
+ end
8
13
 
9
14
  set :public_folder, __dir__ + "/server/public"
10
15
 
11
16
  @@responses ||= {}
17
+ @@requests ||= {}
12
18
  @@not_primed ||= {}
13
19
 
14
20
  put "/get/*" do
@@ -53,6 +59,8 @@ module OptimusPrime
53
59
  @@responses[path][:body] = new_body.to_json
54
60
  end
55
61
 
62
+ record_request(path)
63
+
56
64
  content_type(response[:content_type])
57
65
  status(response[:status_code])
58
66
 
@@ -61,9 +69,15 @@ module OptimusPrime
61
69
  response[:body]
62
70
  end
63
71
 
72
+ def record_request(path)
73
+ requests[path][:count] += 1
74
+ request_made = {method: self.env["REQUEST_METHOD"], body: request.params }
75
+ requests[path][:requests].push(request_made)
76
+ end
77
+
64
78
  def get_path
65
79
  # self.env["REQUEST_URI"].scan(/^\/get\/([\/\w+]+)(\/|\?|$)/).flatten[0]
66
- self.env["REQUEST_URI"].sub("/get/", "")
80
+ self.env["REQUEST_URI"].sub(/\/get\/|\/requests\//, "")
67
81
  end
68
82
 
69
83
  get "/get/*" do
@@ -75,6 +89,8 @@ module OptimusPrime
75
89
  return 404
76
90
  end
77
91
 
92
+ record_request(path)
93
+
78
94
  sleep(response[:sleep].to_f) if response[:sleep]
79
95
 
80
96
  content_type(response[:content_type])
@@ -85,6 +101,7 @@ module OptimusPrime
85
101
  post "/prime" do
86
102
  path = params["path_name"]
87
103
  responses[path] = { content_type: (params["content_type"] || :html), body: params["response"], status_code: (params["status_code"] || 200), requested_with: (params["requested_with"] || false), sleep: (params["sleep"] || false), persisted: (params["persisted"] || false) }
104
+ requests[path] = { count: 0, requests: [] }
88
105
  201
89
106
  end
90
107
 
@@ -97,6 +114,11 @@ module OptimusPrime
97
114
  @@responses = {}
98
115
  end
99
116
 
117
+ get "/requests/*" do
118
+ path = get_path
119
+ requests[path].to_json
120
+ end
121
+
100
122
  get "/not-primed" do
101
123
  content_type :json
102
124
  @@not_primed.to_json
@@ -108,6 +130,10 @@ module OptimusPrime
108
130
  @@responses
109
131
  end
110
132
 
133
+ def requests
134
+ @@requests
135
+ end
136
+
111
137
  def get_boolean(boolean)
112
138
  boolean == "true"
113
139
  end
@@ -1,3 +1,3 @@
1
1
  module OptimusPrime
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/optimus_prime.rb CHANGED
@@ -50,5 +50,15 @@ module OptimusPrime
50
50
  ::Faraday.get("http://localhost:#{OptimusPrime.op_port}/clear")
51
51
  end
52
52
 
53
+ def count(path_name)
54
+ requests = ::Faraday.get("http://localhost:#{OptimusPrime.op_port}/requests/#{path_name}").body
55
+ JSON.parse(requests)["count"]
56
+ end
57
+
58
+ def requests(path_name)
59
+ requests = ::Faraday.get("http://localhost:#{OptimusPrime.op_port}/requests/#{path_name}").body
60
+ JSON.parse(requests)["requests"]
61
+ end
62
+
53
63
  end
54
64
  end
data/optimus_prime.log CHANGED
@@ -3410,3 +3410,394 @@ Thin web server (v1.6.2 codename Doc Brown)
3410
3410
  Debugging ON
3411
3411
  Maximum connections set to 1024
3412
3412
  Listening on 0.0.0.0:7003, CTRL+C to stop
3413
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3414
+ Using rack adapter
3415
+ Thin web server (v1.6.2 codename Doc Brown)
3416
+ Debugging ON
3417
+ Maximum connections set to 1024
3418
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3419
+ Exiting!
3420
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3421
+ Using rack adapter
3422
+ Thin web server (v1.6.2 codename Doc Brown)
3423
+ Debugging ON
3424
+ Maximum connections set to 1024
3425
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3426
+ Exiting!
3427
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3428
+ Using rack adapter
3429
+ Thin web server (v1.6.2 codename Doc Brown)
3430
+ Debugging ON
3431
+ Maximum connections set to 1024
3432
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3433
+ Exiting!
3434
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3435
+ Using rack adapter
3436
+ Thin web server (v1.6.2 codename Doc Brown)
3437
+ Debugging ON
3438
+ Maximum connections set to 1024
3439
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3440
+ Exiting!
3441
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3442
+ Using rack adapter
3443
+ Thin web server (v1.6.2 codename Doc Brown)
3444
+ Debugging ON
3445
+ Maximum connections set to 1024
3446
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3447
+ Exiting!
3448
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3449
+ Using rack adapter
3450
+ Thin web server (v1.6.2 codename Doc Brown)
3451
+ Debugging ON
3452
+ Maximum connections set to 1024
3453
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3454
+ Exiting!
3455
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3456
+ Using rack adapter
3457
+ Thin web server (v1.6.2 codename Doc Brown)
3458
+ Debugging ON
3459
+ Maximum connections set to 1024
3460
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3461
+ Exiting!
3462
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3463
+ Using rack adapter
3464
+ Thin web server (v1.6.2 codename Doc Brown)
3465
+ Debugging ON
3466
+ Maximum connections set to 1024
3467
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3468
+ Exiting!
3469
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3470
+ Using rack adapter
3471
+ Thin web server (v1.6.2 codename Doc Brown)
3472
+ Debugging ON
3473
+ Maximum connections set to 1024
3474
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3475
+ Exiting!
3476
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3477
+ Using rack adapter
3478
+ Thin web server (v1.6.2 codename Doc Brown)
3479
+ Debugging ON
3480
+ Maximum connections set to 1024
3481
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3482
+ Exiting!
3483
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3484
+ Using rack adapter
3485
+ Thin web server (v1.6.2 codename Doc Brown)
3486
+ Debugging ON
3487
+ Maximum connections set to 1024
3488
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3489
+ Exiting!
3490
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3491
+ Using rack adapter
3492
+ Thin web server (v1.6.2 codename Doc Brown)
3493
+ Debugging ON
3494
+ Maximum connections set to 1024
3495
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3496
+ Exiting!
3497
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3498
+ Using rack adapter
3499
+ Thin web server (v1.6.2 codename Doc Brown)
3500
+ Debugging ON
3501
+ Maximum connections set to 1024
3502
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3503
+ Exiting!
3504
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3505
+ Using rack adapter
3506
+ Thin web server (v1.6.2 codename Doc Brown)
3507
+ Debugging ON
3508
+ Maximum connections set to 1024
3509
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3510
+ Exiting!
3511
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3512
+ Using rack adapter
3513
+ Thin web server (v1.6.2 codename Doc Brown)
3514
+ Debugging ON
3515
+ Maximum connections set to 1024
3516
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3517
+ Exiting!
3518
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3519
+ Using rack adapter
3520
+ Thin web server (v1.6.2 codename Doc Brown)
3521
+ Debugging ON
3522
+ Maximum connections set to 1024
3523
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3524
+ Exiting!
3525
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3526
+ Using rack adapter
3527
+ Thin web server (v1.6.2 codename Doc Brown)
3528
+ Debugging ON
3529
+ Maximum connections set to 1024
3530
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3531
+ Exiting!
3532
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3533
+ Using rack adapter
3534
+ Thin web server (v1.6.2 codename Doc Brown)
3535
+ Debugging ON
3536
+ Maximum connections set to 1024
3537
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3538
+ Exiting!
3539
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3540
+ Using rack adapter
3541
+ Thin web server (v1.6.2 codename Doc Brown)
3542
+ Debugging ON
3543
+ Maximum connections set to 1024
3544
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3545
+ Exiting!
3546
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3547
+ Using rack adapter
3548
+ Thin web server (v1.6.2 codename Doc Brown)
3549
+ Debugging ON
3550
+ Maximum connections set to 1024
3551
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3552
+ Exiting!
3553
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3554
+ Using rack adapter
3555
+ Thin web server (v1.6.2 codename Doc Brown)
3556
+ Debugging ON
3557
+ Maximum connections set to 1024
3558
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3559
+ Waiting for 2 connection(s) to finish, can take up to 30 sec, CTRL+C to stop now
3560
+ Exiting!
3561
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3562
+ Using rack adapter
3563
+ Thin web server (v1.6.2 codename Doc Brown)
3564
+ Debugging ON
3565
+ Maximum connections set to 1024
3566
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3567
+ Exiting!
3568
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3569
+ Using rack adapter
3570
+ Thin web server (v1.6.2 codename Doc Brown)
3571
+ Debugging ON
3572
+ Maximum connections set to 1024
3573
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3574
+ Exiting!
3575
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3576
+ Using rack adapter
3577
+ Thin web server (v1.6.2 codename Doc Brown)
3578
+ Debugging ON
3579
+ Maximum connections set to 1024
3580
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3581
+ Exiting!
3582
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3583
+ Using rack adapter
3584
+ Thin web server (v1.6.2 codename Doc Brown)
3585
+ Debugging ON
3586
+ Maximum connections set to 1024
3587
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3588
+ Exiting!
3589
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3590
+ Using rack adapter
3591
+ Thin web server (v1.6.2 codename Doc Brown)
3592
+ Debugging ON
3593
+ Maximum connections set to 1024
3594
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3595
+ Exiting!
3596
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3597
+ Using rack adapter
3598
+ Thin web server (v1.6.2 codename Doc Brown)
3599
+ Debugging ON
3600
+ Maximum connections set to 1024
3601
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3602
+ Exiting!
3603
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3604
+ Using rack adapter
3605
+ Thin web server (v1.6.2 codename Doc Brown)
3606
+ Debugging ON
3607
+ Maximum connections set to 1024
3608
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3609
+ Exiting!
3610
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3611
+ Using rack adapter
3612
+ Thin web server (v1.6.2 codename Doc Brown)
3613
+ Debugging ON
3614
+ Maximum connections set to 1024
3615
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3616
+ Exiting!
3617
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3618
+ Using rack adapter
3619
+ Thin web server (v1.6.2 codename Doc Brown)
3620
+ Debugging ON
3621
+ Maximum connections set to 1024
3622
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3623
+ Exiting!
3624
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3625
+ Using rack adapter
3626
+ Thin web server (v1.6.2 codename Doc Brown)
3627
+ Debugging ON
3628
+ Maximum connections set to 1024
3629
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3630
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3631
+ Using rack adapter
3632
+ Thin web server (v1.6.2 codename Doc Brown)
3633
+ Debugging ON
3634
+ Maximum connections set to 1024
3635
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3636
+ Exiting!
3637
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3638
+ Using rack adapter
3639
+ Thin web server (v1.6.2 codename Doc Brown)
3640
+ Debugging ON
3641
+ Maximum connections set to 1024
3642
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3643
+ Exiting!
3644
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3645
+ Using rack adapter
3646
+ Thin web server (v1.6.2 codename Doc Brown)
3647
+ Debugging ON
3648
+ Maximum connections set to 1024
3649
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3650
+ Exiting!
3651
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3652
+ Using rack adapter
3653
+ Thin web server (v1.6.2 codename Doc Brown)
3654
+ Debugging ON
3655
+ Maximum connections set to 1024
3656
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3657
+ Exiting!
3658
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3659
+ Using rack adapter
3660
+ Thin web server (v1.6.2 codename Doc Brown)
3661
+ Debugging ON
3662
+ Maximum connections set to 1024
3663
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3664
+ Exiting!
3665
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3666
+ Using rack adapter
3667
+ Thin web server (v1.6.2 codename Doc Brown)
3668
+ Debugging ON
3669
+ Maximum connections set to 1024
3670
+ Listening on 0.0.0.0:7004, CTRL+C to stop
3671
+ Exiting!
3672
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3673
+ Using rack adapter
3674
+ Thin web server (v1.6.2 codename Doc Brown)
3675
+ Debugging ON
3676
+ Maximum connections set to 1024
3677
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3678
+ Exiting!
3679
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3680
+ Using rack adapter
3681
+ Thin web server (v1.6.2 codename Doc Brown)
3682
+ Debugging ON
3683
+ Maximum connections set to 1024
3684
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3685
+ Exiting!
3686
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3687
+ Using rack adapter
3688
+ Thin web server (v1.6.2 codename Doc Brown)
3689
+ Debugging ON
3690
+ Maximum connections set to 1024
3691
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3692
+ Exiting!
3693
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3694
+ Using rack adapter
3695
+ Thin web server (v1.6.2 codename Doc Brown)
3696
+ Debugging ON
3697
+ Maximum connections set to 1024
3698
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3699
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3700
+ Using rack adapter
3701
+ Thin web server (v1.6.2 codename Doc Brown)
3702
+ Debugging ON
3703
+ Maximum connections set to 1024
3704
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3705
+
3706
+ From: /Users/mars/dev/optimus_prime/lib/optimus_prime/server.rb @ line 75 OptimusPrime::Server#record_request:
3707
+
3708
+ 72: def record_request(path)
3709
+ 73: requests[path][:count] += 1
3710
+ 74: require 'pry'
3711
+ => 75: binding.pry
3712
+ 76: request_made = {method: self.env["REQUEST_METHOD"], body: request.body.read}
3713
+ 77: requests[path][:requests].push(request_made)
3714
+ 78: end
3715
+
3716
+ [?1034h[1] pry(#<OptimusPrime::Server>)> Waiting for 2 connection(s) to finish, can take up to 30 sec, CTRL+C to stop now
3717
+ Exiting!
3718
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3719
+ Using rack adapter
3720
+ Thin web server (v1.6.2 codename Doc Brown)
3721
+ Debugging ON
3722
+ Maximum connections set to 1024
3723
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3724
+ Exiting!
3725
+ /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
3726
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in `start_server'
3727
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/backends/tcp_server.rb:16:in `connect'
3728
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/backends/base.rb:63:in `block in start'
3729
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `call'
3730
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'
3731
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'
3732
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/backends/base.rb:73:in `start'
3733
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/server.rb:162:in `start'
3734
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/controllers/controller.rb:87:in `start'
3735
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/runner.rb:199:in `run_command'
3736
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/runner.rb:155:in `run!'
3737
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/bin/thin:6:in `<top (required)>'
3738
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/thin:23:in `load'
3739
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/thin:23:in `<main>'
3740
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/ruby_executable_hooks:15:in `eval'
3741
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/ruby_executable_hooks:15:in `<main>'
3742
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3743
+ Using rack adapter
3744
+ Thin web server (v1.6.2 codename Doc Brown)
3745
+ Debugging ON
3746
+ Maximum connections set to 1024
3747
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3748
+
3749
+ From: /Users/mars/dev/optimus_prime/lib/optimus_prime/server.rb @ line 75 OptimusPrime::Server#record_request:
3750
+
3751
+ 72: def record_request(path)
3752
+ 73: requests[path][:count] += 1
3753
+ 74: require 'pry'
3754
+ => 75: binding.pry
3755
+ 76: request_made = {method: self.env["REQUEST_METHOD"], body: request.body.read}
3756
+ 77: requests[path][:requests].push(request_made)
3757
+ 78: end
3758
+
3759
+ [?1034h[1] pry(#<OptimusPrime::Server>)> Exiting!
3760
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3761
+ Using rack adapter
3762
+ Thin web server (v1.6.2 codename Doc Brown)
3763
+ Debugging ON
3764
+ Maximum connections set to 1024
3765
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3766
+ Exiting!
3767
+ /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in `start_tcp_server': no acceptor (port is in use or requires root privileges) (RuntimeError)
3768
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:526:in `start_server'
3769
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/backends/tcp_server.rb:16:in `connect'
3770
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/backends/base.rb:63:in `block in start'
3771
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `call'
3772
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'
3773
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'
3774
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/backends/base.rb:73:in `start'
3775
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/server.rb:162:in `start'
3776
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/controllers/controller.rb:87:in `start'
3777
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/runner.rb:199:in `run_command'
3778
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/lib/thin/runner.rb:155:in `run!'
3779
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/gems/thin-1.6.2/bin/thin:6:in `<top (required)>'
3780
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/thin:23:in `load'
3781
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/thin:23:in `<main>'
3782
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/ruby_executable_hooks:15:in `eval'
3783
+ from /Users/mars/.rvm/gems/ruby-2.1.1@order-tracking/bin/ruby_executable_hooks:15:in `<main>'
3784
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3785
+ Using rack adapter
3786
+ Thin web server (v1.6.2 codename Doc Brown)
3787
+ Debugging ON
3788
+ Maximum connections set to 1024
3789
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3790
+ Exiting!
3791
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3792
+ Using rack adapter
3793
+ Thin web server (v1.6.2 codename Doc Brown)
3794
+ Debugging ON
3795
+ Maximum connections set to 1024
3796
+ Listening on 0.0.0.0:7003, CTRL+C to stop
3797
+ Exiting!
3798
+ Writing PID to /Users/mars/dev/optimus_prime/tmp/pids/optimus_prime.pid
3799
+ Using rack adapter
3800
+ Thin web server (v1.6.2 codename Doc Brown)
3801
+ Debugging ON
3802
+ Maximum connections set to 1024
3803
+ Listening on 0.0.0.0:7003, CTRL+C to stop
@@ -137,4 +137,50 @@ describe OptimusPrime do
137
137
 
138
138
  end
139
139
 
140
+ context "lets you know how many times a request is made for a path" do
141
+
142
+ it "GET" do
143
+ op.prime("continue", { username: "Test" }.to_json, content_type: :json)
144
+ expect( ::Faraday.get("http://localhost:7003/requests/continue").body ).to include("\"count\":0")
145
+ expect( op.count('continue') ).to eq(0)
146
+ ::Faraday.get("http://localhost:7003/get/continue")
147
+ expect( op.count('continue') ).to eq(1)
148
+ expect( ::Faraday.get("http://localhost:7003/requests/continue").body ).to include("\"count\":1")
149
+ end
150
+
151
+ it "POST" do
152
+ op.prime("kermit", { username: "Test" }.to_json, content_type: :json)
153
+ expect( ::Faraday.get("http://localhost:7003/requests/kermit").body ).to include("\"count\":0")
154
+ expect( op.count('kermit') ).to eq(0)
155
+ ::Faraday.post("http://localhost:7003/get/kermit")
156
+ expect( op.count('kermit') ).to eq(1)
157
+ expect( ::Faraday.get("http://localhost:7003/requests/kermit").body ).to include("\"count\":1")
158
+ end
159
+
160
+ end
161
+
162
+ context "it returns the requests made for a path" do
163
+
164
+ it "GET" do
165
+ op.prime("continue", { username: "Test" }.to_json, content_type: :json)
166
+ ::Faraday.get("http://localhost:7003/get/continue")
167
+ expect( ::Faraday.get("http://localhost:7003/requests/continue").body ).to include("\"requests\":[{\"method\":\"GET\",\"body\":{}}]")
168
+ expect( op.requests("continue") ).to eq([{ "method" => "GET", "body" => {} }])
169
+ end
170
+
171
+ it "POST" do
172
+ op.prime("kermit", { username: "Test" }.to_json, content_type: :json)
173
+ ::Faraday.post("http://localhost:7003/get/kermit", { username: "Test" })
174
+ expect( ::Faraday.get("http://localhost:7003/requests/kermit").body ).to include("\"requests\":[{\"method\":\"POST\",\"body\":{\"username\":\"Test\"}}]")
175
+ expect( op.requests("kermit") ).to eq([{ "method" => "POST", "body" => { "username" => "Test" } }])
176
+ end
177
+
178
+ it "returns a decoded body" do
179
+ op.prime("kermit", { username: "Test" }.to_json, content_type: :json)
180
+ ::Faraday.post("http://localhost:7003/get/kermit", { word: "with spaces and other shit" })
181
+ expect( op.requests("kermit") ).to eq([{ "method" => "POST", "body" => {"word" => "with spaces and other shit"} }])
182
+ end
183
+
184
+ end
185
+
140
186
  end
data/tags ADDED
@@ -0,0 +1,27 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4
+ !_TAG_PROGRAM_NAME Exuberant Ctags //
5
+ !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
+ !_TAG_PROGRAM_VERSION 5.8 //
7
+ Base lib/optimus_prime.rb /^ class Base$/;" c class:OptimusPrime
8
+ OptimusPrime lib/optimus_prime.rb /^module OptimusPrime$/;" m
9
+ OptimusPrime lib/optimus_prime/server.rb /^module OptimusPrime$/;" m
10
+ OptimusPrime lib/optimus_prime/version.rb /^module OptimusPrime$/;" m
11
+ Server lib/optimus_prime/server.rb /^ class Server < ::Sinatra::Base$/;" c class:OptimusPrime
12
+ clear! lib/optimus_prime.rb /^ def clear!$/;" f class:OptimusPrime.Base
13
+ count lib/optimus_prime.rb /^ def count(path_name)$/;" f class:OptimusPrime.Base
14
+ current_path lib/optimus_prime.rb /^ def self.current_path; `pwd`.chomp; end$/;" F class:OptimusPrime
15
+ full_path lib/optimus_prime.rb /^ def self.full_path$/;" F class:OptimusPrime
16
+ get_boolean lib/optimus_prime/server.rb /^ def get_boolean(boolean)$/;" f
17
+ get_path lib/optimus_prime/server.rb /^ def get_path$/;" f
18
+ op_port lib/optimus_prime.rb /^ def self.op_port; @@op_port; end$/;" F class:OptimusPrime
19
+ optimus_prime_path lib/optimus_prime.rb /^ def self.optimus_prime_path$/;" F class:OptimusPrime
20
+ prime lib/optimus_prime.rb /^ def prime(path_name, response="", options={})$/;" f class:OptimusPrime.Base
21
+ record_request lib/optimus_prime/server.rb /^ def record_request(path)$/;" f
22
+ requests lib/optimus_prime.rb /^ def requests(path_name)$/;" f class:OptimusPrime.Base
23
+ requests lib/optimus_prime/server.rb /^ def requests$/;" f
24
+ responses lib/optimus_prime/server.rb /^ def responses$/;" f
25
+ restart_server lib/optimus_prime.rb /^ def self.restart_server$/;" F class:OptimusPrime
26
+ start_server lib/optimus_prime.rb /^ def self.start_server(options={})$/;" F class:OptimusPrime
27
+ stop_server lib/optimus_prime.rb /^ def self.stop_server$/;" F class:OptimusPrime
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimus_prime
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antonio Nalesso
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-07 00:00:00.000000000 Z
11
+ date: 2014-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -103,6 +103,7 @@ files:
103
103
  - spec/lib/optimus_prime_spec.rb
104
104
  - spec/lib/start_stop_spec.rb
105
105
  - spec/spec_helper.rb
106
+ - tags
106
107
  homepage: ''
107
108
  licenses:
108
109
  - MIT