[[PageOutline]] = Detailed test plan for IG-MON-1: Control Network Software and VLAN Inspection Test = ''This page is GPO's working page for performing IG-MON-1. It is public for informational purposes, but it is not an official status report. See [wiki:GENIRacksHome/InstageniRacks/AcceptanceTestStatus] for the current status of InstaGENI acceptance tests.'' ''Last substantive edit of this page: 2012-05-17'' == Page format == * The status chart summarizes the state of this test * The high-level description from test plan contains text copied exactly from the public test plan and acceptance criteria pages. * The steps contain things i will actually do/verify: * Steps may be composed of related substeps where i find this useful for clarity * Each step is either a preparatory step (identified by "(prep)") or a verification step (the default): * Preparatory steps are just things we have to do. They're not tests of the rack, but are prerequisites for subsequent verification steps * Verification steps are steps in which we will actually look at rack output and make sure it is as expected. They contain a '''Using:''' block, which lists the steps to run the verification, and an '''Expect:''' block which lists what outcome is expected for the test to pass. == Status of test == || '''Step''' || '''State''' || '''Date completed''' || '''Tickets''' || '''Comments''' || || 1 || || || || ready to test || || 2 || || || || ready to test || || 3 || [[Color(orange,Blocked)]] || || || blocked on sudo access to foam VM || || 4 || [[Color(orange,Blocked)]] || || || blocked on sudo access to flowvisor VM || || 5 || || || || ready to test || || 6 || || || || ready to test || || 7 || || || || ready to test || == High-level description from test plan == This test inspects the state of the rack control network, infrastructure nodes, and system software. ==== Procedure ==== * A site administrator enumerates processes on each of the server host, the boss VM, the ops VM, the FOAM VM, and an experimental node configured for OpenVZ, which listen for network connections from other nodes, identifies what version of what software package is in use for each, and verifies that we know the source of each piece of software and could get access to its source code. * A site administrator reviews the configuration of the rack control plane switch and verifies that each experimental node's control and iLO interfaces are on the expected VLANs. * A site administrator reviews the MAC address table on the control plane switch, and verifies that all entries are identifiable and expected. === Criteria to verify as part of this test === * VI.09. A public document explains how to identify the software versions and system file configurations running on the rack, and how to get information about recent changes to the rack software and configuration. (F.5) * VI.11. A public document describes the GENI software running on the rack, and explains how to get access to the source code of each piece of GENI software. (F.6) * VII.03. Site administrators can understand the expected control and dataplane network behavior of their rack. (F.2) * VII.04. Site administrators can view and investigate current system and network activity on their rack. (F.2) * VII.06. A site administrator can verify the control software and configurations on the rack at some point in time. (F.5) * VII.08. A site administrator can get access to source code for the version of each piece of GENI code installed on their site rack at some point in time. (F.6) * VII.09. A site administrator can determine the MAC addresses of all physical host interfaces, all network device interfaces, all active experimental VMs, and all recently-terminated experimental VMs. (C.3.f) * VII.10. A site administrator can locate current and recent CPU and memory utilization for each rack network device, and can find recent changes or errors in a log. (D.6.a) * VII.12. For each infrastructure and experimental host, a site administrator can locate current and recent uptime, CPU, disk, and memory utilization, interface traffic counters, process counts, and active user counts. (D.6.b) * VII.13. A site administrator can locate recent syslogs for all infrastructure and experimental hosts. (D.6.b) == Step 1: identify network-listening software on the boss node == '''Using:''' * Using netstat, enumerate processes on boss which listen for network connections from outside the node * For each process found: * Use the command-line to determine what executable file is running * Use pkg_info to determine whether the executable file is part of a FreeBSD package/port * Otherwise, use documentation or iterate with the InstaGENI team to determine the origin of the software * For each FreeBSD package found, identify a location from which the port source can be obtained * For each non-FreeBSD software source found, identify a location from which the source code for that version can be obtained. '''Verify:''' * The source of each network-listening file can be identified * FreeBSD ports can be identified for each FreeBSD-sourced package * The source code and identifiable version (e.g. a git tag) can be found for each non-FreeBSD software source == Step 2: identify network-listening software on the ops node == '''Using:''' * Using netstat, enumerate processes on ops which listen for network connections from outside the node * For each process found: * Use the command-line to determine what executable file is running * Use pkg_info to determine whether the executable file is part of a FreeBSD package/port * Otherwise, use documentation or iterate with the InstaGENI team to determine the origin of the software * For each FreeBSD package found, identify a location from which the port source can be obtained * For each non-FreeBSD software source found, identify a location from which the source code for that version can be obtained. '''Verify:''' * The source of each network-listening file can be identified * FreeBSD ports can be identified for each FreeBSD-sourced package * The source code and identifiable version (e.g. a git tag) can be found for each non-FreeBSD software source == Step 3: identify network-listening software on the foam node == '''Using:''' * Using netstat, enumerate processes on foam which listen for network connections from outside the node * For each process found: * Use the command-line to determine what executable file is running * Use dpkg commands to determine whether the executable file is part of a Debian package * Otherwise, use documentation or iterate with the InstaGENI team to determine the origin of the software * For each Debian package found, identify a location from which the source package can be obtained * For each non-Debian package found, identify a location from which the source code for that version can be obtained. '''Verify:''' * The source of each network-listening file can be identified * Source code or a source package can be identified for each Debian-sourced package * The source code and identifiable version (e.g. a git tag) can be found for each non-Debian software source == Step 4: identify network-listening software on the FlowVisor node == '''Using:''' * Using netstat, enumerate processes on flowvisor which listen for network connections from outside the node * For each process found: * Use the command-line to determine what executable file is running * Use dpkg commands to determine whether the executable file is part of a Debian package * Otherwise, use documentation or iterate with the InstaGENI team to determine the origin of the software * For each Debian package found, identify a location from which the source package can be obtained * For each non-Debian package found, identify a location from which the source code for that version can be obtained. '''Verify:''' * The source of each network-listening file can be identified * Source code or a source package can be identified for each Debian-sourced package * The source code and identifiable version (e.g. a git tag) can be found for each non-Debian software source == Step 5: identify network-listening software on the control host == '''Using:''' * Using netstat, enumerate processes on the control host which listen for network connections from outside the node * For each process found: * Use the command-line to determine what executable file is running * Use dpkg commands to determine whether the executable file is part of a Debian package * Otherwise, use documentation or iterate with the InstaGENI team to determine the origin of the software * For each Debian package found, identify a location from which the source package can be obtained * For each non-Debian package found, identify a location from which the source code for that version can be obtained. '''Verify:''' * The source of each network-listening file can be identified * Source code or a source package can be identified for each Debian-sourced package * The source code and identifiable version (e.g. a git tag) can be found for each non-Debian software source == Step 6: identify network-listening software on an OpenVZ experimental node == '''Using:''' * Using netstat, enumerate processes on an allocated node running the OpenVZ image which listen for network connections from outside the node * For each process found: * Use the command-line or `/proc` to determine what executable file is running * Use RPM tools to determine whether the executable file is part of an RPM * Otherwise, use documentation or iterate with the InstaGENI team to determine the origin of the software * For each RPM found, identify a location from which a source RPM for that package can be obtained * For each non-RPM software source found, identify a location from which the source code for that version can be obtained. '''Verify:''' * The source of each network-listening file can be identified * RPM source packages can be found for each RPM-sourced package * The source code and identifiable version (e.g. a git tag) can be found for each non-RPM software source == Step 7: verify VLANs on the rack management switch == '''Using:''' * Establish a privileged login to the control plane switch * Obtain the list of all VLAN mappings for all interfaces * Determine which interfaces connect to experimental nodes * Obtain a list of the full MAC address table of the switch * Use interface listings on hosts and devices to determine the identities of all MAC addresses '''Verify:''' * All experimental node control interfaces are on an expected VLAN * It is possible to identify and classify every MAC address visible on the control switch