4 |
|
|
5 |
my $debug = shift @ARGV; |
my $debug = shift @ARGV; |
6 |
|
|
7 |
use Test::More tests => 16; |
use Test::More tests => 19; |
8 |
use Data::Dump qw/dump/; |
use Data::Dump qw/dump/; |
9 |
use Cwd qw/abs_path/; |
use Cwd qw/abs_path/; |
10 |
use blib; |
use blib; |
12 |
BEGIN { |
BEGIN { |
13 |
use_ok('Net::HTTP'); |
use_ok('Net::HTTP'); |
14 |
use_ok('CWMP::Server'); |
use_ok('CWMP::Server'); |
15 |
|
use_ok('CWMP::Store'); |
16 |
} |
} |
17 |
|
|
18 |
my $port = 4242; |
my $port = 4242; |
25 |
ok(my $abs_path = abs_path($0), "abs_path"); |
ok(my $abs_path = abs_path($0), "abs_path"); |
26 |
$abs_path =~ s!/[^/]*$!/!; #!fix-vim |
$abs_path =~ s!/[^/]*$!/!; #!fix-vim |
27 |
|
|
28 |
|
my $store_path = "$abs_path/var/state.db"; |
29 |
|
unlink $store_path if -e $store_path; |
30 |
|
|
31 |
ok( my $server = CWMP::Server->new({ |
ok( my $server = CWMP::Server->new({ |
32 |
debug => $debug, |
debug => $debug, |
33 |
port => $port, |
port => $port, |
34 |
store_path => "$abs_path/var/state.db", |
store_path => $store_path, |
35 |
}), 'new' ); |
}), 'new' ); |
36 |
isa_ok( $server, 'CWMP::Server' ); |
isa_ok( $server, 'CWMP::Server' ); |
37 |
|
|
48 |
die "can't fork"; |
die "can't fork"; |
49 |
} |
} |
50 |
|
|
51 |
|
sleep 1; # so server can start |
52 |
|
|
53 |
ok( my $s = Net::HTTP->new(Host => "localhost:$port"), 'client' ); |
ok( my $s = Net::HTTP->new(Host => "localhost:$port"), 'client' ); |
54 |
$s->keep_alive( 1 ); |
$s->keep_alive( 1 ); |
55 |
|
|
150 |
} |
} |
151 |
ok( $s->write_chunk_eof, 'write_chunk_eof' ); |
ok( $s->write_chunk_eof, 'write_chunk_eof' ); |
152 |
|
|
153 |
ok( kill(1,$pid), 'kill ' . $pid ); |
sleep 1; |
154 |
|
|
155 |
|
ok( my $store = CWMP::Store->new({ path => $store_path, debug => $debug }), 'another store' ); |
156 |
|
|
157 |
|
my $state = { |
158 |
|
CurrentTime => "1970-01-01T00:04:33Z", |
159 |
|
DeviceID => { |
160 |
|
Manufacturer => "THOMSON", |
161 |
|
OUI => "00147F", |
162 |
|
ProductClass => "SpeedTouch 780", |
163 |
|
SerialNumber => "CP0644JTHJ4", |
164 |
|
}, |
165 |
|
EventStruct => ["0 BOOTSTRAP", "1 BOOT", "4 VALUE CHANGE"], |
166 |
|
ID => "1_THOM_TR69_ID", |
167 |
|
MaxEnvelopes => 2, |
168 |
|
NoMoreRequests => undef, |
169 |
|
Parameter => { |
170 |
|
"\nInternetGatewayDevice.DeviceInfo.SpecVersion" => "1.1", |
171 |
|
".ExternalIPAddress" => "192.168.1.254", |
172 |
|
"InternetGatewayDevice.DeviceInfo.HardwareVersion" => "BANT-R", |
173 |
|
"InternetGatewayDevice.DeviceInfo.ProvisioningCode" => undef, |
174 |
|
"InternetGatewayDevice.DeviceInfo.SoftwareVersion" => "6.2.15.5", |
175 |
|
"InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Date" => "0000-00-00T00:00:00", |
176 |
|
"InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Description" => "Factory Defaults", |
177 |
|
"InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Name" => "Routed PPPoE on 0/35 and 8/35", |
178 |
|
"InternetGatewayDevice.DeviceInfo.VendorConfigFile.1.Version" => undef, |
179 |
|
"InternetGatewayDevice.DeviceSummary" => "InternetGatewayDevice:1.1[] (Baseline:1, EthernetLAN:1, ADSLWAN:1, Bridging:1, Time:1, WiFiLAN:1)", |
180 |
|
"InternetGatewayDevice.ManagementServer.ConnectionRequestURL" => "http://192.168.1.254:51005/", |
181 |
|
"InternetGatewayDevice.ManagementServer.ParameterKey" => undef, |
182 |
|
}, |
183 |
|
RetryCount => "01", |
184 |
|
_dispatch => "InformResponse", |
185 |
|
}; |
186 |
|
|
187 |
|
is_deeply( $store->state( '1_THOM_TR69_ID' ), $state, 'new store->state' ); |
188 |
|
|
189 |
|
ok( kill(9,$pid), 'kill ' . $pid ); |
190 |
|
|
191 |
ok( waitpid($pid,0), 'waitpid' ); |
ok( waitpid($pid,0), 'waitpid' ); |