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.

libtbsetup.pm 1.21 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
#!/usr/bin/perl -w

# This has the common functionality for tbprerun/tbrun/tbend.

# tbs_initdbi(dbname) - Initializes a DBI connection to the testbed database
#                       Returns the database handle.
# tbs_prefix(s) - Returns the file prefix.  I.e. strips off \..+$ from the end.
# tbs_out(s) - Spits s out to stdout and LOGFILE.
# tbs_exec(s) - Acts like system except STDOUT and STDERR are both spat out
#               through tbs_out.  Returns 1 on failure and 0 on success.

my $LOGFILE;

sub tbs_initdbi {
    my($dbname) = $_[0];
    return DBI->connect("DBI:mysql:database=$dbname;host=localhost") 
	|| die "Could not connect to DB.\n";
};

sub tbs_initlog {
    my($logfile) = $_[0];

23 24 25
    # Turn off line buffering.
    $| = 1; 

26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
    open(LOGFILE,">$logfile") || do {
	print STDERR "Could not open $logfile for writing.\n";
	exit(1);
    };
}

sub tbs_prefix {
    my($s) = $_[0];
    my($prefix);
    ($prefix) = ($s =~ /^(.+)\.[^.]+$/);
    return $prefix;
};

sub tbs_out {
    my($s) = $_[0];
    print $s;
    print LOGFILE $s;
};

sub tbs_exec {
    my($cmd) = $_[0];
    open(EXEC,"$cmd 2>&1|") || return 1;
    while (<EXEC>) {
	&tbs_out($_);
    }
51 52 53
    close(EXEC) or
	return $! ? $! : $?;

54 55 56 57
    return 0;
};

1;