Changeset 3080 in /cluster/svnroot


Ignore:
Timestamp:
Mar 22, 2011 11:27:36 AM (10 years ago)
Author:
leemasa
Message:

Merged test framework into trunk (#524)

Location:
bccd-ng/trunk
Files:
4 deleted
7 edited
3 copied

Legend:

Unmodified
Added
Removed
  • bccd-ng/trunk/bin/build_livecd.pl

    r3075 r3080  
    8686
    8787if(defined($opts{'nocleanup'})) {
     88        print "Disabling automatic cleanup\n";
    8889        $ft = File::Temp->newdir("/tmp/$PROJECT.XXXXXXX",CLEANUP => 0);
    8990}
    9091else {
     92        print "Enabling automatic cleanup\n";
    9193        $ft = File::Temp->newdir("/tmp/$PROJECT.XXXXXXX",DIR=>$dir,CLEANUP => 1);
    9294}
     
    345347          "nsswitch.conf", "unionfs.conf", "X11/xinit/xinitrc", "X11/xinit/xserverrc",
    346348          "dpkg/dpkg.cfg", "ld.so.conf.d/software.conf", "sudoers", "init.d/bccd-networking",
    347           "init.d/bccd-passwd", "init.d/bccd-dhcp", "init.d/bccd-sshd", "X11/xorg.conf",
     349                  "init.d/bccd-bootflags", "init.d/bccd-automated", "init.d/bccd-passwd",
     350                   "init.d/bccd-dhcp", "init.d/bccd-sshd", "X11/xorg.conf",
    348351          "lam.conf", "init.d/bccd-nfs", "init.d/bccd-unite-sw", "init.d/bccd-nics",
    349352          "init.d/bccd-dhcp-conf", "init.d/bccd-route", "init.d/bccd-keyboard", "rc.local",
     
    368371
    369372foreach my $file ( "bccd-networking", "bccd-passwd", "bccd-dhcp", "bccd-sshd", "bccd-nfs", "bccd-unite-sw",
    370           "bccd-nics", "bccd-dhcp-conf", "bccd-route", "bccd-keyboard", "bccd-fsrw", "bccd-mail" ) {
     373          "bccd-nics", "bccd-dhcp-conf", "bccd-route", "bccd-keyboard", "bccd-fsrw", "bccd-mail", "bccd-bootflags", "bccd-automated" ) {
    371374    $Bccd->run_test(
    372375        "chmod",
     
    788791
    789792# This must run before 20 (bccd-passwd) and autofs
    790 foreach my $script ("bccd-unite-sw", "perfctr",) {
     793foreach my $script ("bccd-unite-sw", "perfctr","bccd-automated") {
    791794    $Bccd->run_test(
    792795        "system",
     
    910913    "Enabling bccd-dhcp config.",
    911914    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-dhcp start 40 S .",
     915    );
     916
     917$Bccd->run_test(
     918    "system",
     919    "",
     920    "Building /bccd_boot_flags.",
     921    "/usr/sbin/chroot $BUILDDIR /usr/sbin/update-rc.d bccd-bootflags start 01 S .",
    912922    );
    913923
  • bccd-ng/trunk/packages/etc/init.d/bccd-bootflags

    r3074 r3080  
    1616                                "EXPECTED_NODES" => "8,4",);
    1717Bccd::get_boot_flags_from_NIC(%request);
    18 print "TEST\nTEST\nTEST!!!";
  • bccd-ng/trunk/packages/etc/init.d/bccd-mail

    r2749 r3080  
    3232### END INIT INFO
    3333
    34 echo "dc_eximconfig_configtype='internet'
    35 dc_other_hostnames='BCCD'
    36 dc_local_interfaces=''
    37 dc_readhost=''
    38 dc_relay_domains=''
    39 dc_minimaldns='false'
    40 dc_relay_nets=''
    41 dc_smarthost=''
    42 CFILEMODE='644'
    43 dc_use_split_config='false'
    44 dc_hide_mailname=''
    45 dc_mailname_in_oh='true'
    46 dc_localdelivery='mail_spool'" > /etc/exim4/update-exim4.conf.conf
     34sed -i  \
     35"s/dc_eximconfig_configtype='.*'/dc_eximconfig_configtype='internet'/;
     36 s/dc_other_hostnames='.*'/dc_other_hostnames='BCCD'/"\
     37 /etc/exim4/update-exim4.conf.conf
    4738
    4839update-exim4.conf
  • bccd-ng/trunk/packages/etc/skel/.bash_profile

    r3077 r3080  
    3030#    . ~/.bashrc
    3131#fi
     32
     33if [ -f /bccd_boot_flags ]; then
     34    source /bccd_boot_flags
     35fi
    3236
    3337# set PATH so it includes user's private bin if it exists
     
    7276        xhost + > /dev/null 2>&1
    7377fi
     78
     79if [ -f /testmode -a -z "$DISPLAY" ]; then
     80        startx
     81fi
     82
     83if [ `tty` == "/dev/pts/0" -a $HOSTNAME == "node000.bccd.net" ]; then
     84if [ $BUILD_CONTROL == '1' ]; then
     85echo "initiating automatic control generation
     86some tests may take a little while"
     87
     88perl $HOME/tests/bccd_test_suite.pl -c --verbose --messy --mail
     89echo "Please email developers@bccd.net
     90and state that you have run the iso.
     91Control generation complete."
     92else
     93echo "initiating test suite"
     94perl $HOME/tests/bccd_test_suite.pl --verbose --messy --mail
     95echo "test suite completed"
     96fi
     97echo "Ctrl-C to cancel automatic shutdown"
     98sudo shutdown -h 1
     99fi
  • bccd-ng/trunk/trees/KNOPPIX/boot/isolinux/minirt/linuxrc

    r2829 r3080  
    437437fi
    438438# End of USB check
     439
     440for KO in $(/bbin/find /modules/*/kernel/drivers/net/ -type f -name "*.ko"); do \
     441        MODULE=$(/bbin/basename ${KO}|/bbin/sed -e 's!\.ko$!!g')
     442        /bbin/modprobe ${MODULE}
     443        RC=$?
     444        #echo ${MODULE} ${RC}
     445done
     446
     447echo "ATTEMPTING TO DETECT MODE...";
     448echo "IFCONFIG"
     449ifconfig -a
     450MACADDR=`ifconfig -a | awk '/HWaddr/ {print $5}'`
     451echo "Mac Addresses Detected: $MACADDR";
     452CUSTOM_MAC=`echo -e "$MACADDR" | awk '/^02:/ {print}'`;
     453if [  "" != "$CUSTOM_MAC"  ];  then
     454                echo "CUSTOM_MAC: $CUSTOM_MAC"
     455        echo "CUSTOM MAC DETECTED, BOOTING INTO TEST MODE";
     456        echo 'export BCCD_MODE=test' >> $newhome/.bash_profile;
     457        touch /testmode
     458
     459else
     460                echo "NO CUSTOM MAC DETECTED";
     461        echo "BOOTING INTO INTERACTIVE MODE";
     462        echo 'export BCCD_MODE=interactive' >> $newhome/.bash_profile;
     463        touch /interactivemode
     464fi
    439465
    440466# Check for Firewire, use modules on bootfloppy first
  • bccd-ng/trunk/trees/bin/bccd-passwd-wrapper

    r2749 r3080  
    3737my $passwd = $Bccd->read_passwd();
    3838
    39 if(length($passwd)) {
     39if($passwd) {
    4040        open(my $PASSWD, '|-', "/usr/bin/passwd $user")
    4141                or die "Can't run passwd $user: $!\n";
  • bccd-ng/trunk/trees/home/bccd/Life/Makefile

    r2765 r3080  
    66# Copyright (C) 2010 Andrew Fitz Gibbon, Paul Gray, Kevin Hunter, Dave Joiner,
    77#   Sam Leeman-Munk, Tom Murphy, Charlie Peck, Skylar Thompson, & Aaron Weeden
    8 
    98#
    109# This program is free software: you can redistribute it and/or modify
     
    7877$(PROGRAM).mpi:
    7978        $(MPICC) -o $@ $(SRCS) $(CFLAGS) $(MPIFLAGS) $(LDFLAGS)
     79        ln -s Life.mpi Life
    8080
    8181$(PROGRAM).openmp:
     
    8686
    8787clean:
    88         /bin/rm -f $(OBJS) $(PROGRAM).serial $(PROGRAM).mpi $(PROGRAM).openmp $(PROGRAM).hybrid
     88        /bin/rm -f $(OBJS) $(PROGRAM).serial $(PROGRAM).mpi $(PROGRAM).openmp $(PROGRAM).hybrid $(PROGRAM)
    8989
    9090help:
  • bccd-ng/trunk/trees/usr/local/lib/site_perl/5.10.0/Bccd.pm

    r2944 r3080  
    8080chomp($hostname);
    8181Readonly my $SHORT_HOSTNAME => $hostname;
     82
     83#Boot Flag Indices
     84Readonly my $CUSTOM_NIC => "02";
     85Readonly my $IS_BCCD_NETWORK_NIC => 0;
     86
    8287undef($hostname);
    8388
     
    22522257        if($#dhcp_nics == 1) {
    22532258            $bccd_nic = $dhcp_nics[0];
    2254         }
    2255         elsif($#dhcp_nics > 1) {
    2256             $bccd_nic = $d->menu(text=>"Choose NIC to have BCCD network.", list => \@dhcp_nics);
    2257         }
    2258         if(!$self->is_dialog_ok($d)) {
    2259             redo FIND_EXT_NIC;
    2260         }
     2259        }
     2260                elsif($#dhcp_nics > 1 and not -e '/testmode') {
     2261                        $bccd_nic = $d->menu(text=>"Choose NIC to have BCCD network.", list => \@dhcp_nics);
     2262                        if(!$self->is_dialog_ok($d)) {
     2263                                redo FIND_EXT_NIC;
     2264                        }
     2265                }else {
     2266                        open (TEST,'</bccd_boot_flags') or croak "$!";
     2267                my      @command = grep (/BCCD_NIC/, <TEST>);
     2268                        if ($command[0] =~ m/export BCCD_NIC=(.*)$/){
     2269                                $bccd_nic = $1;
     2270                        }
     2271                        print STDERR "$bccd_nic selected for BCCD network\n"
     2272                }
    22612273                # Copy iptables template regardless of NAT Status
    22622274                open(my $IPT, '>', $IPTABLES_UP) or
     
    22722284                        print $IPT "$LINE\n";
    22732285                }
     2286                close($IPT);
    22742287        if(defined($bccd_nic) && !$self->check_bccd_net($nic_conf)) {
    22752288            $nic_conf->{"$bccd_nic:1"} = $BCCD_NET;
    2276                         foreach my $LINE (
    2277                                                                 q{*nat},
    2278                                                                 q{:PREROUTING ACCEPT [145:21906]},
    2279                                                                 q{:POSTROUTING ACCEPT [8:630]},
    2280                                                                 q{:OUTPUT ACCEPT [27:2202]},
    2281                                                                 q{COMMIT},
    2282                                                         ) {
    2283                                 print $IPT "$LINE\n";
    2284                         }
    2285         }
    2286                 close($IPT);
     2289        }
    22872290
    22882291      NIC_CONF:
     
    22942297                }
    22952298            }
    2296             elsif(defined($nic_conf->{$nic}->{'dhcp_source'}) && $d->yesno(text=>"$nic has an IP address $nic_conf->{$nic}->{'ipaddr'} from $nic_conf->{$nic}->{'dhcp_source'}. Take this address?")) {
     2299            elsif(defined($nic_conf->{$nic}->{'dhcp_source'})
     2300                        && ((-e '/testmode') || ($d->yesno(text=>"$nic has an IP address $nic_conf->{$nic}->{'ipaddr'} from $nic_conf->{$nic}->{'dhcp_source'}. Take this address?")
     2301                        ))) {
    22972302                $nic_conf->{$nic}->{'dhcp'} = 1;
    22982303            }
     
    23012306            }
    23022307            if($nic_conf->{$nic}->{'dhcp'} == 0 && !defined($nic_conf->{$nic}->{'ipaddr'})
    2303                && !$d->yesno(text=>"No DHCP for $nic, skip?")) {
     2308             && ! -e '/testmode'
     2309                         && ! $d->yesno(text=>"No DHCP for $nic, skip?")) {
    23042310                $nic_conf->{$nic}->{'dhcp'} = 0;
    23052311            }
    2306             else {
    2307                 next NIC_CONF;
    2308             }
    2309             if($nic_conf->{$nic}->{'dhcp'} == 0) {
    2310                 FIND_CUR_NIC:
    2311                 do {
    2312                     $nic_conf->{$nic}->{'ipaddr'} = ($temp = $d->inputbox(text=>"$nic IP address (mandatory)")) ? $temp : undef;
     2312                        else {
     2313                                next NIC_CONF;
     2314                        }
     2315                        if($nic_conf->{$nic}->{'dhcp'} == 0) {
     2316FIND_CUR_NIC:
     2317                                do {
     2318                                        if (-e '/testmode'){
     2319                                                $nic_conf->{$nic}->{'ipaddr'} = '192.168.0.*';
     2320                                        }else{
     2321                                                $nic_conf->{$nic}->{'ipaddr'} =
     2322                                                ($temp = $d->inputbox(text=>
     2323                                                "$nic IP address (mandatory)")) ? $temp : undef;
     2324
     2325                                                if(!$self->is_dialog_ok($d)) {
     2326                                                        redo FIND_EXT_NIC;
     2327                                                }
     2328                                                elsif($nic_conf->{$nic}->{'ipaddr'}
     2329                                                         eq $BCCD_NET->{'ipaddr'}) {
     2330                                                        $d->msgbox(text =>
     2331                 "IP address cannot be the BCCD virtual IP ($BCCD_NET->{'ipaddr'}).");
     2332                                                        goto FIND_CUR_NIC;
     2333                                                }
     2334                                        }
     2335                   
     2336                                        if (-e '/testmode'){
     2337                                                $nic_conf->{$nic}->{'mask'} = "255.255.255.0";
     2338                                        } else {
     2339                                                $nic_conf->{$nic}->{'mask'} =
     2340                                                ($temp = $d->inputbox(text=>
     2341                                                 "$nic Subnet mask (mandatory)")) ? $temp : undef;
    23132342                   
    2314                     if(!$self->is_dialog_ok($d)) {
    2315                         redo FIND_EXT_NIC;
    2316                     }
    2317                     elsif($nic_conf->{$nic}->{'ipaddr'} eq $BCCD_NET->{'ipaddr'}) {
    2318                         $d->msgbox(text => "IP address cannot be the BCCD virtual IP ($BCCD_NET->{'ipaddr'}).");
    2319                         goto FIND_CUR_NIC;
    2320                     }
    2321                    
    2322                     $nic_conf->{$nic}->{'mask'} = ($temp = $d->inputbox(text=>"$nic Subnet mask (mandatory)")) ? $temp : undef;
    2323                    
    2324                     if(!$self->is_dialog_ok($d)) {
    2325                         redo FIND_EXT_NIC;
    2326                     }
     2343                                                if(!$self->is_dialog_ok($d)) {
     2344                                                        redo FIND_EXT_NIC;
     2345                                                }
     2346                                        }
    23272347                   
    23282348                    $nic_conf->{$nic}->{'gw'} = ($temp = $d->inputbox(text=>"$nic Gateway (optional)")) ? $temp : undef;
     
    23362356        }
    23372357    }
    2338    
    23392358    return $nic_conf;
    23402359}
     
    24192438sub read_passwd {
    24202439    my($self) = @_;
    2421     my($passwd,$confirm);
    2422    
     2440    my($passwd,$confirm,$empty);
    24232441    do {
    24242442        print "Please enter your password: ";
    24252443        ReadMode('noecho');
    24262444        $passwd = <STDIN>;
    2427         chomp $passwd;
     2445        if ($passwd){
     2446                chomp $passwd;
     2447        }
    24282448        print "\n";
    24292449        ReadMode('restore');
     
    24322452        ReadMode('noecho');
    24332453        $confirm = <STDIN>;
    2434         chomp $confirm;
     2454        if ($confirm){
     2455                chomp $confirm;
     2456        }
    24352457        print "\n";
    24362458        ReadMode('restore');
     2459        if (not $passwd){
     2460                $passwd = "";
     2461        }
     2462        if (not $confirm){
     2463                $confirm = "";
     2464        }
    24372465    } while($passwd ne $confirm);
    24382466    return $passwd;
     2467}
     2468
     2469sub get_boot_flags_from_NIC{
     2470        my %request = @_;
     2471        my @custom_macs;
     2472        my @custom_nics;
     2473        my @boot_strings;
     2474        my $boot_string;
     2475        my $bccd_nic;
     2476
     2477
     2478        my @mac_addresses =
     2479                split(/\n/,`$IFCONFIG | awk '/HWaddr/ {print \$1 " " \$5}'`);
     2480        @custom_macs = grep {/ 02:/} @mac_addresses;
     2481
     2482        for(my $i = 0; $i <= $#custom_macs; ++$i){
     2483                if($custom_macs[$i] =~ m/^(.*?) /) {
     2484                        $custom_nics[$i] = $1;
     2485                }
     2486
     2487                my $open_hex;
     2488                if ($custom_macs[$i] =~ m/([0-9a-fA-F]):([0-9a-fA-F][0-9a-fA-F])$/){
     2489                        $open_hex = $1.$2;
     2490                } else {
     2491                        die "Error in detecting last three hexes in MAC $!";
     2492                }
     2493
     2494                $boot_strings[$i] = sprintf "%012b", hex( $open_hex );
     2495
     2496                if (
     2497                                substr($boot_strings[$i],
     2498                                        $IS_BCCD_NETWORK_NIC,1)
     2499                                eq '1'
     2500                   )
     2501                {
     2502                        $bccd_nic = $custom_nics[$i];
     2503                        $boot_string = $boot_strings[$i];
     2504                }
     2505        }
     2506       
     2507        my $boot_flags = "#!/bin/sh\nexport BCCD_NIC=$bccd_nic\n";     
     2508
     2509        foreach my $key(keys %request){
     2510                my $value;
     2511                my $pointer = $request{$key};
     2512                my ($index,$length) = split(/,/,$pointer);
     2513
     2514                unless($length){
     2515                        $length = 1;
     2516                }
     2517
     2518                $value = substr($boot_string,$index,$length);
     2519                $value = oct ("0b$value");
     2520                       
     2521                $boot_flags .= "export $key=$value\n"; 
     2522        }
     2523
     2524        if ($boot_flags){
     2525                open(BOOTFLAGS, ">/bccd_boot_flags")
     2526                        or die "Could not open /bccd_boot_flags:$!";
     2527                print BOOTFLAGS $boot_flags;
     2528                close(BOOTFLAGS);
     2529                chmod 0755, '/bccd_boot_flags';
     2530        }
    24392531}
    24402532
     
    25772669Takes a source and destination path and rsync's the source to the destination.
    25782670
     2671=head2 MISCELLANEOUS SUBROUTINES
     2672
     2673These do not take any standardized arguments
     2674
     2675=head3 get_boot_flags_from_NIC(%)
     2676
     2677Takes data from the NIC's MAC address and populates /bccd_boot_flags
     2678according to key-position hash.
     2679
     2680Splits the last three hexes of the bccd network's custom NIC
     2681into a 12 digit binary string. Takes a hash of keys and
     2682positions in that binary string. Key translates directly into
     2683the name of the environment variable into which the information
     2684is stored, and the position is a comma-separated-value list
     2685with an index (starting at 0) and optionally a bit length (default 1).
     2686so ('BUILD_CONTROL' => 1) takes the second bit in the last
     2687three digits of the MAC and writes "export BUILD_CONTROL=<value>" to
     2688/bccd_boot_flags
     2689
     2690The first entry in /bccd_boot_flags is always "export BCCD_NIC=<BCCD NIC>"
     2691
     2692For a list of the official automated test bootflags
     2693and their corresponding locations, check the BCCD Wiki
     2694
    25792695=cut
Note: See TracChangeset for help on using the changeset viewer.