All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 0e1c5761 authored by Kevin Tew's avatar Kevin Tew

testsuite/testswap more docs and simplification

parent f246595d
TO INSTALL
REQUIREMENTS
ssh-agent running with SSH emulab keys added
emulab client certificate and key
TBConfig.pm set up correctly
INSTALLATION INSTRUCTIONS
cpan HAS to be configured and functional
cpan Module::Install
perl Makefile.PL
make
TO FUN
TO RUN Tests
make test
make t/old/old.t
make t/topologies/basic.t
Module::Install is a perl library for installing perl modules/frameworks like testswap
If you need help getting CPAN to run as non-root:
http://www.google.com/search?q=cpan+install+to+home+dir
How to install Perl CPAN modules into my HOME directory?
https://help.webfaction.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=132
Using CPAN with a non-root account
http://sial.org/howto/perl/life-with-cpan/non-root/
Module::Install http://search.cpan.org/~adamk/Module-Install/
use SemiModern::Perl;
package TBConfig;
use SemiModern::Perl;
use Sys::Hostname;
use Crypt::X509;
use Tools qw(slurp);
......
DOC
POD
-default run kill
buildup, teardown - Test::Class
Add parameterization examples
Add parse links from xmlserver
EXAMPLES
traffic generation`
test groupings
linkinfo
event system
convert more old tests
general result code handling
better parallel support
THINKING ABOUT IT
Test::Class
move xmlrpc tests to t/xmlrpc
MOSTLY DONE
Parse NodeInfo
......
testswap is a object orient / declarative test framework for the emulab testbed.
LIBRARY CODE
./lib/TestBed/TestSuite/
Core framework modules that the testwriter should use
./lib/TestBed/XMLRPC/Client/
The XMLRPC client interface that the core modules use to do their work
shouldn't be directly used by the testwriter
./lib/TestBed/Wrap/
command line utility wrappers
./lib/Tools/
utility modules and functions used by the framework
TESTS
./t/topologies/
topology swap tests
./t/*.t
xmlrpc tests
./t/lib
testswap framework tests
e('PROJECT_ID', 'EXPERIMENT_ID'); #new experiment
ep(); #new plain experiment for calling "class methods" on
dpe('EXPERIMENT_ID') #default project new experiment
./README - initial getting started doc
./TBConfig.pm - global configuration values
./tbts - testbed testsuite driver
./sc - shortcut driver for interactive user
./lib/SemiModern/Perl.pm - provides perl5.10 say to older perls
./lib/TestBed/TestSuite.pm - provides e() ep() dpe() macros
./lib/TestBed/TestSuite/Node.pm - represents a emulab node
./lib/TestBed/TestSuite/Project.pm - represents a emulab project
./lib/TestBed/TestSuite/Experiment.pm - represents a emulab experiment
./lib/TestBed/TestSuite/Experiment/Macros.pm - holds some obselete macros
./lib/TestBed/XMLRPC/Client.pm - XMLRPC utility classes
./lib/TestBed/XMLRPC/Client/NodeInfo.pm
./lib/TestBed/XMLRPC/Client/Experiment.pm
./lib/TestBed/XMLRPC/Client/Pretty.pm - XMLRPC pretty printers
./lib/TestBed/XMLRPC/Client/Emulab.pm
./lib/TestBed/Wrap/tevc.pm - tevc wrapper
./lib/TestBed/Wrap/linktest.pm - linktest wrapper
./lib/Tools.pm - utility functions
./lib/Tools/TBSSH.pm - testbed ssh functions
./lib/Tools/Network.pm - network utility functions (ping traceroute)
./doc/architecture.txt
./doc/cheatsheet.txt
./doc/dirmap.txt
./Makefile.PL - Module::Install makefile
./t/harness - perl test harness
./t/topologies/basic.t - basic topology test
./t/topologies/simple.t - simple topology test
./t/old/old.t - old testsuite tests
./t/old/oldtestsuite.pm - old testsuite data
./t/emulab.t - emulab XMLRPC tests
./t/experiment.t - experiment XMLRPC tests
./t/lib - testswap framework tests
./t/lib/tools.t - testswap framework tools tests
./t/lib/tools/network.t - testswap framework network tests
#!/usr/bin/perl
package TestBed::TestSuite;
use SemiModern::Perl;
use TestBed::TestSuite::Experiment;
use Data::Dumper;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(e ep dpe);
sub ep { TestBed::TestSuite::Experiment->new }
sub e { TestBed::TestSuite::Experiment->new('pid'=> shift, 'eid' => shift) }
sub dpe { TestBed::TestSuite::Experiment->new('pid'=> $TBConfig::DEFAULT_PID, 'eid' => shift) }
1;
......@@ -60,11 +60,22 @@ sub trytest(&$) {
}
}
sub startrunkill {
my ($e, $ns, $worker) = @_;
my $eid = $e->eid;
trytest {
$e->startexp_ns_wait($ns) && die "batchexp $eid failed";
$worker->($e) && die "worker function failed";
$e->end && die "exp end $eid failed";
} $e;
}
#class methods
sub launchpingkill {
my ($pid, $eid, $ns) = @_;
my $e = e($pid, $eid);
trytest {
$e->batchexp_ns_wait($ns) && die "batchexp $eid failed";
$e->startexp_ns_wait($ns) && die "batchexp $eid failed";
$e->ping_test && die "connectivity test $eid failed";
$e->end && die "exp end $eid failed";
} $e;
......@@ -74,7 +85,7 @@ sub launchpingswapkill {
my ($pid, $eid, $ns) = @_;
my $e = e($pid, $eid);
trytest {
$e->batchexp_ns_wait($ns) && die "batchexp $eid failed";
$e->startexp_ns_wait($ns) && die "batchexp $eid failed";
$e->ping_test && die "connectivity test $eid failed";
$e->swapout_wait && die "swap out $eid failed";
$e->swapin_wait && die "swap in $eid failed";
......@@ -82,4 +93,5 @@ sub launchpingswapkill {
$e->end && die "exp end $eid failed";
} $e;
}
1;
......@@ -5,7 +5,8 @@ use Test::More qw(no_plan);
use Data::Dumper;
require 't/old/oldtestsuite.pm';
our @pass = qw(basic cbr complete5 delaylan1 delaylink);
our @who_knows = qw( ixp lan1 multilink nodes singlenode trafgen simplelink simplex setip red ping );
our @who_knows_passed = qw( lan1 multilink );
our @who_knows = qw( ixp lan1 nodes singlenode trafgen simplelink simplex setip red ping );
our @should_fail = qw(negprerun toomanylinks toofast);
=pod
......@@ -14,8 +15,10 @@ S fixed (you will have to change the ns file depending on which nodes are
available)
=cut
for (@pass) {
say "Running " . $_;
#for (@pass) {
for (@who_knows) {
my $ns = $Testbed::OldTestSuite::data->{$_}->{'nsfile'};
ok(launchpingkill('tbres', $_, $ns));
say "Running " . $_;
say $ns;
ok(launchpingkill('tbres', $_, $ns), $_);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment