mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-10-30 18:27:53 +00:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
29
LICENSE
Normal file
29
LICENSE
Normal file
@@ -0,0 +1,29 @@
|
||||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2020, Telecom Infra Project
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
@@ -104,19 +104,19 @@ function pre_test {
|
||||
then
|
||||
# Kill any existing processes on this serial port
|
||||
pkill -f ".*openwrt_ctl.*$LF_SERIAL.*"
|
||||
../openwrt_ctl.py --action lurk --tty $LF_SERIAL --scheme serial --user root --passwd $LFPASSWD --prompt "\[root@" > $LF_SER_LOG 2>&1 &
|
||||
../openwrt_ctl.py --action lurk $OWRTCTL_ARGS --tty $LF_SERIAL --scheme serial --user root --passwd $LFPASSWD --prompt "\[root@" > $LF_SER_LOG 2>&1 &
|
||||
fi
|
||||
|
||||
if [ "_${AP_SERIAL}" != "_NONE" ]
|
||||
then
|
||||
# Kill any existing processes on this serial port
|
||||
pkill -f ".*openwrt_ctl.*$AP_SERIAL.*"
|
||||
../openwrt_ctl.py --action logread --tty $AP_SERIAL --scheme serial > $DUT_SER_LOG 2>&1 &
|
||||
../openwrt_ctl.py --action logread $OWRTCTL_ARGS --tty $AP_SERIAL --scheme serial > $DUT_SER_LOG 2>&1 &
|
||||
fi
|
||||
}
|
||||
|
||||
function reboot_dut {
|
||||
../openwrt_ctl.py --action reboot --tty $AP_SERIAL --scheme serial
|
||||
../openwrt_ctl.py --action reboot $OWRTCTL_ARGS --tty $AP_SERIAL --scheme serial
|
||||
# TODO: Support hard-power cycle with power-ctl switch as well?
|
||||
}
|
||||
|
||||
|
||||
52
gui/kpi.java
52
gui/kpi.java
@@ -1,6 +1,6 @@
|
||||
//
|
||||
// LANforge-GUI Source Code
|
||||
// Copyright (C) 1999-2018 Candela Technologies Inc
|
||||
// Copyright (C) 1999-2020 Candela Technologies Inc
|
||||
// http://www.candelatech.com
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
@@ -45,7 +45,7 @@ public class kpi {
|
||||
public static int PRIORITY_IDX = 6;
|
||||
public static int TEST_ID_IDX = 7;
|
||||
public static int SHORT_DESC_IDX = 8;
|
||||
public static int PASS_FAIL_IDX = 8;
|
||||
public static int PASS_FAIL_IDX = 9;
|
||||
public static int NUMERIC_SCORE_IDX = 10;
|
||||
public static int NOTES_IDX = 11;
|
||||
public static int UNITS_IDX = 12;
|
||||
@@ -121,6 +121,8 @@ public class kpi {
|
||||
String dir = null;
|
||||
String results_url = "";
|
||||
String caseid = "";
|
||||
String slack_fname = "";
|
||||
String testbed_name = "LANforge CICD";
|
||||
|
||||
for (int i = 0; i<args.length; i++) {
|
||||
if (args[i].equals("--dir")) {
|
||||
@@ -132,8 +134,18 @@ public class kpi {
|
||||
else if (args[i].equals("--results_url")) {
|
||||
results_url = args[i+1];
|
||||
}
|
||||
else if (args[i].equals("--slack_fname")) {
|
||||
slack_fname = args[i+1];
|
||||
}
|
||||
else if (args[i].equals("--testbed_name")) {
|
||||
testbed_name = args[i+1];
|
||||
}
|
||||
else if (args[i].equals("--help") || args[i].equals("-h") || args[i].equals("-?")) {
|
||||
System.out.println("Usage: $0 --dir /path/to/test-collection");
|
||||
System.out.println("Usage: $0 --dir /path/to/test-collection\n" +
|
||||
"--caseid [case-id]\n" +
|
||||
"--results_url [url]\n" +
|
||||
"--slack_fname [slack url webhook file name]\n" +
|
||||
"--testbed_name [My Testbed]");
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
@@ -149,16 +161,17 @@ public class kpi {
|
||||
DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(dir));
|
||||
for (Path file: stream) {
|
||||
File f = file.toFile(); // this is the test run dir
|
||||
//System.out.println("Checking sub-directory/file (run): " + f.getAbsolutePath());
|
||||
// Inside of it is individual tests.
|
||||
if (!f.isDirectory()) {
|
||||
continue;
|
||||
}
|
||||
//System.out.println("Checking sub-directory/file (run): " + f.getAbsolutePath());
|
||||
DirectoryStream<Path> stream2 = Files.newDirectoryStream(file);
|
||||
Run run = null;
|
||||
|
||||
for (Path file2: stream2) {
|
||||
File f2 = file2.toFile(); // this is the test case dir in the test run
|
||||
//System.out.println("Checking test-case directory/file: " + f2.getAbsolutePath());
|
||||
// Directory full of test results?
|
||||
if (f2.isDirectory()) {
|
||||
DirectoryStream<Path> stream3 = Files.newDirectoryStream(file2);
|
||||
@@ -617,7 +630,7 @@ public class kpi {
|
||||
bw.write(System.lineSeparator());
|
||||
bw.write(testrails_msg);
|
||||
bw.write(System.lineSeparator());
|
||||
bw.write("MSG URL: " + results_url);
|
||||
bw.write("MSG URL: " + results_url + "/" + run.getName());
|
||||
bw.write(System.lineSeparator());
|
||||
|
||||
bw.close();
|
||||
@@ -628,6 +641,35 @@ public class kpi {
|
||||
eee.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (!slack_fname.equals("")) {
|
||||
String slack_content_type = "Content-type: application/json";
|
||||
String slack_msg = "{\"text\":\"<" + results_url + "|" + testbed_name + ">"
|
||||
+ " Results: <" + results_url + "/" + run.getName() + "|" + run.getName() + ">"
|
||||
+ " Errors: " + (run.getLogCrashes() + run.getLogRestarting() + run.getLogBugs()) + " Warnings: " + run.getLogWarnings()
|
||||
+ "\"}";
|
||||
try {
|
||||
BufferedReader br = new BufferedReader(new FileReader(slack_fname));
|
||||
String slack = br.readLine();
|
||||
String cmd = "curl -X POST -H '" + slack_content_type + "' --data '" + slack_msg + "' " + slack;
|
||||
System.out.println(cmd);
|
||||
|
||||
ShellExec exec = new ShellExec(true, true);
|
||||
int rv = exec.execute("curl", null, true,
|
||||
"-X", "POST",
|
||||
"-H", slack_content_type,
|
||||
"--data", slack_msg, slack);
|
||||
if (rv != 0) {
|
||||
System.out.println("curl slack post of msg: " + slack_msg + " to: " + slack + " failed.\n");
|
||||
System.out.println(exec.getOutput());
|
||||
System.out.println(exec.getError());
|
||||
}
|
||||
}
|
||||
catch (Exception eeee) {
|
||||
System.out.println("slack_msg: " + slack_msg + " slack_fname: " + slack_fname);
|
||||
eeee.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
runs_rows.append(row_text);
|
||||
|
||||
Reference in New Issue
Block a user