5 # 11/12/2007 10:03:53 PM CET <>
15 my $protocol_dump = 0;
20 'protocol-dump!' => \$protocol_dump,
24 my $id = shift @ARGV || die "usage: $0 CPE_id [--protocol-dump]\n";
26 $id =~ s!^.*queue/+!!;
29 die "ID isn't valid: $id\n" unless $id =~ m/^\w+$/;
31 my $q = CWMP::Queue->new({ id => $id, debug => $debug });
34 if ( $protocol_dump ) {
36 warn "generating dump of xml protocol with CPE\n";
38 $q->enqueue( 'GetRPCMethods' );
39 $q->enqueue( 'GetParameterNames' );
41 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.SerialNumber', 0 ] );
42 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.', 1 ] );
44 $q->enqueue( 'GetParameterValues', [
45 'InternetGatewayDevice.DeviceInfo.SerialNumber',
46 'InternetGatewayDevice.DeviceInfo.VendorConfigFile.',
47 'InternetGatewayDevice.DeviceInfo.X_000E50_Country',
49 $q->enqueue( 'SetParameterValues', {
50 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision',
51 # 'InternetGatewayDevice.DeviceInfo.X_000E50_Country' => 1,
54 # $q->enqueue( 'Reboot' );
60 warn "list all jobs for $id\n";
64 my $hostname = $q->dq->gethostname();
67 my ($visitcontext, $job) = @_;
69 my $data = $job->get_data_path();
70 my $nbytes = $job->get_data_size_bytes();
71 my $timet = $job->get_time_submitted_secs();
72 my $hname = $job->get_hostname_submitted();
73 my $jobid = $job->{jobid};
76 "%s (%d bytes)\n Submitted: %s on %s\n",
77 $jobid, $nbytes, scalar localtime $timet, $hname);
79 $text .= read_file( $data ) || die "can't open $data: $!";
81 if ($job->{active_pid})
83 if ($hostname eq $job->{active_host}
84 && !kill (0, $job->{active_pid}))
87 "(dead lockfile)\n %s",
93 $job->{active_pid}, $job->{active_host}, $text);
96 push (@active, $text);
99 push (@queued, $text);
105 $q->dq->visit_all_jobs(\&wanted, undef);
106 printf "Jobs: active: %d queued: %d\n",
107 scalar @active, scalar @queued;
109 print "Active jobs [", scalar @active, "]\n",join("\n\n", @active) if @active;
110 print "Queued jobs [", scalar @queued, "]\n",join("\n\n", @queued) if @queued;
114 warn "injecting some tests commands\n";
116 # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] );
118 # $q->enqueue( 'GetParameterValues', [
119 # 'InternetGatewayDevice.',
122 $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] );
123 $q->enqueue( 'SetParameterValues', { '.ExternalIPAddress' => '192.168.1.250' });
124 $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] );