sippy_cup 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +9 -9
- data/.gitignore +3 -0
- data/.rspec +1 -0
- data/.travis.yml +15 -0
- data/CHANGELOG.md +20 -0
- data/Gemfile +2 -0
- data/Guardfile +4 -9
- data/README.markdown +28 -28
- data/Rakefile +2 -3
- data/bin/sippy_cup +16 -26
- data/lib/sippy_cup/media.rb +3 -1
- data/lib/sippy_cup/runner.rb +148 -50
- data/lib/sippy_cup/scenario.rb +436 -206
- data/lib/sippy_cup/tasks.rb +3 -3
- data/lib/sippy_cup/version.rb +1 -1
- data/lib/sippy_cup/xml_scenario.rb +57 -0
- data/lib/sippy_cup.rb +1 -0
- data/sippy_cup.gemspec +2 -1
- data/spec/fixtures/dtmf_2833_1.pcap +0 -0
- data/spec/fixtures/scenario.xml +73 -0
- data/spec/sippy_cup/fixtures/test.yml +16 -0
- data/spec/sippy_cup/runner_spec.rb +425 -71
- data/spec/sippy_cup/scenario_spec.rb +820 -71
- data/spec/sippy_cup/xml_scenario_spec.rb +103 -0
- data/spec/spec_helper.rb +5 -2
- metadata +30 -5
- data/tmp/rspec_guard_result +0 -1
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SippyCup::XMLScenario do
|
4
|
+
include FakeFS::SpecHelpers
|
5
|
+
|
6
|
+
before do
|
7
|
+
Dir.mkdir("/tmp") unless Dir.exist?("/tmp")
|
8
|
+
Dir.chdir "/tmp"
|
9
|
+
end
|
10
|
+
|
11
|
+
let(:default_args) { {source: '127.0.0.1:5060', destination: '10.0.0.1:5080'} }
|
12
|
+
let(:args) { {} }
|
13
|
+
|
14
|
+
let(:xml) do
|
15
|
+
<<-XML
|
16
|
+
<?xml version="1.0"?>
|
17
|
+
<scenario name="Test">
|
18
|
+
<send retrans="500">
|
19
|
+
<![CDATA[
|
20
|
+
INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
|
21
|
+
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
|
22
|
+
From: "sipp" <sip:sipp@[local_ip]>;tag=[call_number]
|
23
|
+
To: <sip:[service]@[remote_ip]:[remote_port]>
|
24
|
+
Call-ID: [call_id]
|
25
|
+
CSeq: [cseq] INVITE
|
26
|
+
Contact: <sip:sipp@[local_ip]:[local_port];transport=[transport]>
|
27
|
+
Max-Forwards: 100
|
28
|
+
User-Agent: SIPp/sippy_cup
|
29
|
+
Content-Type: application/sdp
|
30
|
+
Content-Length: [len]
|
31
|
+
|
32
|
+
v=0
|
33
|
+
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
|
34
|
+
s=-
|
35
|
+
c=IN IP[media_ip_type] [media_ip]
|
36
|
+
t=0 0
|
37
|
+
m=audio [media_port] RTP/AVP 0 101
|
38
|
+
a=rtpmap:0 PCMU/8000
|
39
|
+
a=rtpmap:101 telephone-event/8000
|
40
|
+
a=fmtp:101 0-15
|
41
|
+
]]>
|
42
|
+
</send>
|
43
|
+
</scenario>
|
44
|
+
XML
|
45
|
+
end
|
46
|
+
let(:media) do
|
47
|
+
FakeFS.deactivate!
|
48
|
+
media = File.read(File.expand_path('dtmf_2833_1.pcap', File.join(File.dirname(__FILE__), '..', 'fixtures')), mode: 'rb')
|
49
|
+
FakeFS.activate!
|
50
|
+
media
|
51
|
+
end
|
52
|
+
|
53
|
+
subject(:scenario) { described_class.new 'Test', xml, media, default_args.merge(args) }
|
54
|
+
|
55
|
+
describe "#to_xml" do
|
56
|
+
it "should return the XML representation of the scenario" do
|
57
|
+
subject.to_xml.should == xml
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe "#to_tmpfiles" do
|
62
|
+
it "writes the scenario XML to a Tempfile and returns it" do
|
63
|
+
files = scenario.to_tmpfiles
|
64
|
+
files[:scenario].should be_a(Tempfile)
|
65
|
+
files[:scenario].read.should eql(xml)
|
66
|
+
end
|
67
|
+
|
68
|
+
it "allows the scenario XML to be read from disk independently" do
|
69
|
+
files = scenario.to_tmpfiles
|
70
|
+
File.read(files[:scenario].path).should eql(xml)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "writes the PCAP media to a Tempfile and returns it" do
|
74
|
+
files = scenario.to_tmpfiles
|
75
|
+
files[:media].should be_a(Tempfile)
|
76
|
+
files[:media].read.should eql(media)
|
77
|
+
end
|
78
|
+
|
79
|
+
it "allows the PCAP media to be read from disk independently" do
|
80
|
+
files = scenario.to_tmpfiles
|
81
|
+
File.read(files[:media].path).should eql(media)
|
82
|
+
end
|
83
|
+
|
84
|
+
context "when media is not provided" do
|
85
|
+
let(:media) { nil }
|
86
|
+
|
87
|
+
it "should not create a media file" do
|
88
|
+
files = scenario.to_tmpfiles
|
89
|
+
files[:media].should be_nil
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "#scenario_options" do
|
95
|
+
it "should return options passed to the initializer" do
|
96
|
+
scenario.scenario_options.should == {
|
97
|
+
name: 'Test',
|
98
|
+
source: '127.0.0.1:5060',
|
99
|
+
destination: '10.0.0.1:5080'
|
100
|
+
}
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
$testing = true
|
4
|
-
|
5
3
|
%w{
|
6
4
|
sippy_cup
|
5
|
+
fakefs/spec_helpers
|
7
6
|
}.each { |f| require f }
|
8
7
|
|
9
8
|
RSpec.configure do |config|
|
@@ -11,4 +10,8 @@ RSpec.configure do |config|
|
|
11
10
|
config.filter_run :focus => true
|
12
11
|
config.run_all_when_everything_filtered = true
|
13
12
|
config.color_enabled = true
|
13
|
+
|
14
|
+
config.around(:each) do |example|
|
15
|
+
quietly { example.run }
|
16
|
+
end
|
14
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sippy_cup
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Klang
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-11-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: packetfu
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - ! '>'
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '3.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: psych
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 2.0.0
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.0
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: guard-rspec
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -110,7 +124,7 @@ dependencies:
|
|
110
124
|
- !ruby/object:Gem::Version
|
111
125
|
version: '0'
|
112
126
|
- !ruby/object:Gem::Dependency
|
113
|
-
name:
|
127
|
+
name: fakefs
|
114
128
|
requirement: !ruby/object:Gem::Requirement
|
115
129
|
requirements:
|
116
130
|
- - ! '>='
|
@@ -133,7 +147,9 @@ extensions: []
|
|
133
147
|
extra_rdoc_files: []
|
134
148
|
files:
|
135
149
|
- .gitignore
|
150
|
+
- .rspec
|
136
151
|
- .ruby-version
|
152
|
+
- .travis.yml
|
137
153
|
- CHANGELOG.md
|
138
154
|
- Gemfile
|
139
155
|
- Guardfile
|
@@ -152,12 +168,16 @@ files:
|
|
152
168
|
- lib/sippy_cup/scenario.rb
|
153
169
|
- lib/sippy_cup/tasks.rb
|
154
170
|
- lib/sippy_cup/version.rb
|
171
|
+
- lib/sippy_cup/xml_scenario.rb
|
155
172
|
- sippy_cup.gemspec
|
173
|
+
- spec/fixtures/dtmf_2833_1.pcap
|
174
|
+
- spec/fixtures/scenario.xml
|
175
|
+
- spec/sippy_cup/fixtures/test.yml
|
156
176
|
- spec/sippy_cup/media_spec.rb
|
157
177
|
- spec/sippy_cup/runner_spec.rb
|
158
178
|
- spec/sippy_cup/scenario_spec.rb
|
179
|
+
- spec/sippy_cup/xml_scenario_spec.rb
|
159
180
|
- spec/spec_helper.rb
|
160
|
-
- tmp/rspec_guard_result
|
161
181
|
homepage: https://github.com/bklang/sippy_cup
|
162
182
|
licenses:
|
163
183
|
- MIT
|
@@ -178,12 +198,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
178
198
|
version: '0'
|
179
199
|
requirements: []
|
180
200
|
rubyforge_project:
|
181
|
-
rubygems_version: 2.
|
201
|
+
rubygems_version: 2.1.10
|
182
202
|
signing_key:
|
183
203
|
specification_version: 4
|
184
204
|
summary: SIPp profile and RTP stream generator
|
185
205
|
test_files:
|
206
|
+
- spec/fixtures/dtmf_2833_1.pcap
|
207
|
+
- spec/fixtures/scenario.xml
|
208
|
+
- spec/sippy_cup/fixtures/test.yml
|
186
209
|
- spec/sippy_cup/media_spec.rb
|
187
210
|
- spec/sippy_cup/runner_spec.rb
|
188
211
|
- spec/sippy_cup/scenario_spec.rb
|
212
|
+
- spec/sippy_cup/xml_scenario_spec.rb
|
189
213
|
- spec/spec_helper.rb
|
214
|
+
has_rdoc:
|
data/tmp/rspec_guard_result
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
|