5 # 11/12/2007 10:03:53 PM CET <>
15 my $protocol_dump = 0;
21 'protocol-dump!' => \$protocol_dump,
23 'introspect!' => \$introspect,
26 die "usage: $0 [...queue/]CPE_id [ --list | --introspect | --protocol-dump ]\n" unless @ARGV;
28 foreach my $id ( @ARGV ) {
30 $id =~ s!^.*queue/+!!;
33 die "ID isn't valid: $id\n" unless $id =~ m/^\w+$/;
35 my $q = CWMP::Queue->new({ id => $id, debug => $debug });
38 if ( $protocol_dump ) {
40 warn "generating dump of xml protocol with CPE\n";
42 $q->enqueue( 'GetRPCMethods' );
44 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.SerialNumber', 0 ] );
45 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.', 1 ] );
47 $q->enqueue( 'GetParameterValues', [
48 'InternetGatewayDevice.DeviceInfo.SerialNumber',
49 'InternetGatewayDevice.DeviceInfo.VendorConfigFile.',
50 'InternetGatewayDevice.DeviceInfo.X_000E50_Country',
52 $q->enqueue( 'SetParameterValues', {
53 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'test provision',
54 # 'InternetGatewayDevice.DeviceInfo.X_000E50_Country' => 1,
57 $q->enqueue( 'Reboot' );
63 warn "list all jobs for $id\n";
67 my $hostname = $q->dq->gethostname();
70 my ($visitcontext, $job) = @_;
72 my $data = $job->get_data_path();
73 my $nbytes = $job->get_data_size_bytes();
74 my $timet = $job->get_time_submitted_secs();
75 my $hname = $job->get_hostname_submitted();
76 my $jobid = $job->{jobid};
79 "%s (%d bytes)\n Submitted: %s on %s\n",
80 $jobid, $nbytes, scalar localtime $timet, $hname);
82 $text .= read_file( $data ) || die "can't open $data: $!";
84 if ($job->{active_pid})
86 if ($hostname eq $job->{active_host}
87 && !kill (0, $job->{active_pid}))
90 "(dead lockfile)\n %s",
96 $job->{active_pid}, $job->{active_host}, $text);
99 push (@active, $text);
102 push (@queued, $text);
108 $q->dq->visit_all_jobs(\&wanted, undef);
109 printf "Jobs: active: %d queued: %d\n",
110 scalar @active, scalar @queued;
112 print "Active jobs [", scalar @active, "]\n",join("\n\n", @active) if @active;
113 print "Queued jobs [", scalar @queued, "]\n",join("\n\n", @queued) if @queued;
115 } elsif ( $introspect ) {
117 $q->enqueue( 'GetRPCMethods' ); # XXX not supported by ZTE
119 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] );
121 # $q->enqueue( 'GetRPCMethods' ); # XXX not supported by ZTE
123 $q->enqueue( 'GetParameterValues', [
124 'InternetGatewayDevice.',
128 # $q->enqueue( 'GetParameterNames', [ '.ExternalIPAddress', 1 ] );
130 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 1 ] );
131 # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceInfo.', 1 ] );
132 # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.DeviceConfig.', 1 ] );
133 # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.ManagementServer.', 1 ] );
134 # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.Services.', 1 ] );
135 # $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.LANDevice.', 1 ] );
137 $q->enqueue( 'GetParameterNames', [ 'InternetGatewayDevice.', 0 ] );
138 $q->enqueue( 'GetParameterValues', [
139 #'InternetGatewayDevice.', # too big for ZTE
140 'InternetGatewayDevice.DeviceConfig.',
141 'InternetGatewayDevice.DeviceInfo.',
142 'InternetGatewayDevice.DeviceSummary',
143 'InternetGatewayDevice.ManagementServer.',
146 $q->enqueue( 'GetParameterValues' => [ $_ ] ) foreach ( qw/
147 InternetGatewayDevice.IPPingDiagnostics.
148 InternetGatewayDevice.LANConfigSecurity.
149 InternetGatewayDevice.LANDevice.
150 InternetGatewayDevice.Layer2Bridging.
151 InternetGatewayDevice.Layer3Forwarding.
152 InternetGatewayDevice.ManagementServer.
153 InternetGatewayDevice.QueueManagement.
154 InternetGatewayDevice.Time.
155 InternetGatewayDevice.UserInterface.
156 InternetGatewayDevice.WANDevice.
159 $q->enqueue( 'GetParameterAttributes', [
160 'InternetGatewayDevice.DeviceInfo.SerialNumber',
161 'InternetGatewayDevice.DeviceInfo.SoftwareVersion',
164 # $q->enqueue( 'SetParameterAttributes', [ '
168 warn "injecting some tests commands\n";
170 # turn on periodic reporting to ACS server
172 # $q->enqueue( 'GetParameterValues', [ 'InternetGatewayDevice.ManagementServer.' ] );
173 $q->enqueue( 'SetParameterValues', {
174 'InternetGatewayDevice.DeviceInfo.ProvisioningCode' => 'perl-cwmp provision',
176 $q->enqueue( 'SetParameterValues', {
177 'InternetGatewayDevice.ManagementServer.PeriodicInformInterval' => 15, # s
179 $q->enqueue( 'SetParameterValues', {
180 'InternetGatewayDevice.ManagementServer.PeriodicInformEnable' => 1,
183 $q->enqueue( 'GetParameterValues', [
184 'InternetGatewayDevice.ManagementServer.',
185 'InternetGatewayDevice.DeviceInfo.ProvisioningCode',