Changeset 6587
- Timestamp:
- Mar 14, 2006, 5:18:25 PM (20 years ago)
- Location:
- trunk/DataStore
- Files:
-
- 2 edited
-
lib/DataStore/FileSet.pm (modified) (3 diffs)
-
t/06_fileset.t (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/DataStore/lib/DataStore/FileSet.pm
r6539 r6587 1 1 # Copyright (C) 2006 Joshua Hoblitt 2 2 # 3 # $Id: FileSet.pm,v 1. 2 2006-03-08 00:22:51jhoblitt Exp $3 # $Id: FileSet.pm,v 1.3 2006-03-15 03:18:25 jhoblitt Exp $ 4 4 5 5 package DataStore::FileSet; … … 13 13 use base qw( DataStore::Record ); 14 14 15 use Carp qw( carp ); 16 use DataStore::File::Parser; 17 use DataStore::Response; 18 use LWP::UserAgent; 15 19 use Params::Validate qw( validate SCALAR ); 16 20 … … 81 85 } 82 86 87 =back 88 89 =head3 Object Methods 90 91 =over 4 92 93 =item * C<request()> 94 95 =cut 96 97 sub request 98 { 99 my $self = shift; 100 101 # no params 102 validate(@_, {}); 103 104 # make request 105 my $ua = LWP::UserAgent->new; 106 my $request = HTTP::Request->new(GET => $self->uri); 107 my $response = $ua->request($request); 108 109 if (! $response->is_success) { 110 carp $response->status_line; 111 return undef; 112 } 113 114 # parse document 115 my $parser = DataStore::File::Parser->new; 116 117 my $data = $parser->parse($response->content); 118 119 unless ($data) { 120 carp "Product contains no FileSets"; 121 return undef; 122 } 123 124 125 # return DS::Response object 126 my $dsr = DataStore::Response->new( 127 is_success => 1, 128 code => $response->code, 129 status_line => $response->status_line, 130 data => $data, 131 request => $self, 132 ); 133 } 134 83 135 1; 84 136 -
trunk/DataStore/t/06_fileset.t
r6540 r6587 3 3 # Copyright (C) 2006 Joshua Hoblitt 4 4 # 5 # $Id: 06_fileset.t,v 1. 1 2006-03-08 00:23:09jhoblitt Exp $5 # $Id: 06_fileset.t,v 1.2 2006-03-15 03:18:25 jhoblitt Exp $ 6 6 7 7 use strict; … … 10 10 use lib qw( ./lib ./t ); 11 11 12 use Test::More tests => 6;12 use Test::More tests => 17; 13 13 14 14 =head1 NAME … … 74 74 # ->request() 75 75 76 use Net::HTTPServer; 77 78 sub bar 79 { 80 my $req = shift; # Net::HTTPServer::Request object 81 my $res = $req->Response(); # Net::HTTPServer::Response object 82 83 my $string = <<END; 84 # fileID |bytes |md5sum |type|chipname| 85 otis0123456.01|83002312|fe6a2b6564c0d4cfb3bbf1db813824ba|chip|ota01 | 86 otis0123456.02|83002312|a2b4a7d7b94dc6076c5f3f67239a48c6|chip|ota02 | 87 otis0123456.03|83002312|a39b1510484c7833e27454b181f13981|chip|ota03 | 88 otis0123456.04|83002312|7bb35e1e30f3f833c0416aea75f90304|chip|ota04 | 89 END 90 91 $res->Print($string); 92 93 return $res; 94 } 95 96 $|++; 97 98 $SIG{CHLD} = 'IGNORE'; 99 my $pid = open(my $child, "-|"); 100 101 unless ($pid) { 102 my $server = new Net::HTTPServer( port => 'scan' ); 103 104 # send port number to parent 105 print $server->Start(), "\n"; 106 107 $server->RegisterURL('/', \&bar); 108 $server->Process(); # Run forever 109 110 exit -1; 111 } 112 113 my $port = <$child>; 114 chomp $port; 115 116 { 117 my $dsp = DataStore::FileSet->new( 118 uri => "http://localhost:$port/", 119 fileset => '12buckelyourshoe', 120 datetime => '2042-01-01T00:00:00Z', 121 type => 'foo', 122 ); 123 124 isa_ok($dsp->request, 'DataStore::Response'); 125 } 126 127 { 128 my $dsp = DataStore::FileSet->new( 129 uri => "http://localhost:$port/", 130 fileset => '12buckelyourshoe', 131 datetime => '2042-01-01T00:00:00Z', 132 type => 'foo', 133 ); 134 135 my $dsr = $dsp->request; 136 137 ok($dsr->is_success, "response->is_success() is correct"); 138 is($dsr->code, 200, "response->code() is correct"); 139 is($dsr->status_line, "200 OK", "response->status_line() is correct"); 140 is(ref $dsr->data, 'ARRAY', "response->data is arrayref is correct"); 141 isa_ok($dsr->request, 'DataStore::Record'); 142 143 my $data = $dsr->data; 144 is(scalar @$data, 4, "data has the correct number of rows"); 145 isa_ok(@$data[0], 'DataStore::File', "data has correct type of rows"); 146 isa_ok(@$data[1], 'DataStore::File', "data has correct type of rows"); 147 isa_ok(@$data[2], 'DataStore::File', "data has correct type of rows"); 148 isa_ok(@$data[3], 'DataStore::File', "data has correct type of rows"); 149 } 150 151 # cleanup HTTP server 152 kill 9, $pid;
Note:
See TracChangeset
for help on using the changeset viewer.
