Astro-SpaceTrack
view release on metacpan or search on metacpan
xt/author/celestrak_datasets.t view on Meta::CPAN
package main;
use strict;
use warnings;
use Astro::SpaceTrack;
use HTML::TreeBuilder;
use LWP::UserAgent;
use Test::More 0.96;
use URI;
my $ua = LWP::UserAgent->new ();
# Redistributed TLEs
note 'Celestrak current data';
my $rslt = $ua->get ('https://celestrak.org/NORAD/elements/');
$rslt->is_success()
or plan skip_all => 'Celestrak inaccessable: ' . $rslt->status_line;
my %got = parse_string( $rslt->content(), source => 'celestrak' );
my $st = Astro::SpaceTrack->new();
my %expect = %{ $st->__catalog( 'celestrak' ) };
=begin comment
# Fetchable as of November 16 2021.
$expect{'1999-025'} = {
name => 'Fengyun 1C debris',
note => 'Not actually provided as a fetchable data set.',
ignore => 1,
};
$expect{'cosmos-2251-debris'} = {
name => 'Cosmos 2251 debris',
note => 'Not actually provided as a fetchable data set.',
ignore => 1,
};
$expect{'iridium-33-debris'} = {
name => 'Iridium 33 debris',
note => 'Not actually provided as a fetchable data set.',
ignore => 1,
};
$expect{'2019-006'} = {
name => 'Indian ASAT Test Debris',
note => 'Not actually provided as a fetchable data set.',
ignore => 1,
};
# Removed October 23, 2008
$expect{'usa-193-debris'} = {
name => 'USA 193 Debris',
note => 'Not actually provided as a fetchable data set.',
ignore => 1,
};
# Keys relocated to Astro::SpaceTrack April 26 2024.
$expect{'2012-044'} = {
name => 'BREEZE-M R/B Breakup (2012-044C)',
note => 'Fetchable as of November 16 2021, but not on web page',
ignore => 1,
};
# Removed April 26 2024
if ($expect{sts}) {
$expect{sts}{note} = 'Only available when a mission is in progress.';
$expect{sts}{ignore} = 1; # What it says.
}
=end comment
=cut
foreach my $key (sort keys %expect) {
if ($expect{$key}{ignore}) {
my $presence = delete $got{$key} ? 'present' : 'not present';
note "Ignored - $key (@{[($got{$key} ||
$expect{$key})->{name}]}): $presence";
$expect{$key}{note} and note( " $expect{$key}{note}" );
} else {
ok delete $got{$key}, $expect{$key}{name};
$expect{$key}{note} and note " $expect{$key}{note}";
}
}
ok ( ! keys %got, 'The above is all there is' ) or do {
diag( 'The following primary data sets have been added:' );
foreach (sort keys %got) {
diag( " $_ => '$got{$_}{name}'" );
}
};
# Supplemental TLEs
note 'Celestrak supplemental data';
$rslt = $ua->get ('https://celestrak.org/NORAD/elements/supplemental/');
%got = parse_string( $rslt->content, source => 'celestrak_supplemental' );
foreach my $key ( keys %got ) {
$key !~ m{ / }smx
and $key !~ m{ [.] rms \z }smx
and $key !~ m{ [.] match \z }smx
and next;
delete $got{$key};
}
# diag 'Debug - got ', explain \%got;
%expect = %{ Astro::SpaceTrack->__catalog( 'celestrak_supplemental' ) };
%{ $_ } = ( %{ $_ }, ignore => 0 ) for values %expect;
foreach my $key ( keys %got ) {
if ( $got{$key}{name} =~ m/ \b (
pre-launch | post-deployment | backup \s+ launch \s+ opportunity
) \b /smxi ) {
( run in 1.179 second using v1.01-cache-2.11-cpan-71847e10f99 )