optimus_prime 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
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