Skip to content

Commit d53e162

Browse files
committed
ci: create auto test tool workflow
1 parent 5696f71 commit d53e162

1 file changed

Lines changed: 167 additions & 0 deletions

File tree

.github/workflows/lfc_test.yml

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
name: LFC Script CI
2+
3+
on:
4+
push:
5+
branches: [ main ]
6+
pull_request:
7+
branches: [ "*" ]
8+
9+
jobs:
10+
test_lfc_script:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout code
14+
uses: actions/checkout@v4
15+
16+
- name: Make LFC.sh executable
17+
run: chmod +x LFC/LFC.sh
18+
19+
- name: Test LFC.sh with default settings
20+
run: |
21+
set -e # Exit immediately if a command exits with a non-zero status.
22+
echo "--- Running LFC.sh with default settings ---"
23+
sudo ./LFC/LFC.sh
24+
25+
echo "--- Verifying default output ---"
26+
DEFAULT_TARBALL="/tmp/result.tar.gz"
27+
DEFAULT_EXTRACT_DIR="/tmp/extracted_default_output"
28+
DEFAULT_OUTPUT_BASENAME="result"
29+
30+
if [ -f "$DEFAULT_TARBALL" ]; then
31+
echo "Default output tarball $DEFAULT_TARBALL created successfully."
32+
mkdir -p "$DEFAULT_EXTRACT_DIR"
33+
sudo tar -xzf "$DEFAULT_TARBALL" -C "$DEFAULT_EXTRACT_DIR"
34+
35+
LOG_FILE_PATH="$DEFAULT_EXTRACT_DIR/$DEFAULT_OUTPUT_BASENAME/log_file.log"
36+
if [ -f "$LOG_FILE_PATH" ]; then
37+
echo "log_file.log found in extracted default output."
38+
# Check for osquery not found message (script should detect this)
39+
if grep -q "osqueryi not found at /usr/bin/osqueryi" "$LOG_FILE_PATH"; then
40+
echo "osqueryi not found message correctly logged."
41+
else
42+
echo "Error: osqueryi not found message missing from log."
43+
cat "$LOG_FILE_PATH"
44+
exit 1
45+
fi
46+
# Check for overall completion message
47+
if grep -q "Artifact collection completed" "$LOG_FILE_PATH"; then
48+
echo "Artifact collection completed message found."
49+
else
50+
echo "Error: Artifact collection completed message NOT found in log."
51+
cat "$LOG_FILE_PATH"
52+
exit 1
53+
fi
54+
else
55+
echo "Error: log_file.log not found in extracted default output."
56+
ls -R "$DEFAULT_EXTRACT_DIR"
57+
exit 1
58+
fi
59+
sudo rm -rf "$DEFAULT_EXTRACT_DIR"
60+
else
61+
echo "Error: Default output tarball $DEFAULT_TARBALL not found."
62+
exit 1
63+
fi
64+
sudo rm "$DEFAULT_TARBALL"
65+
66+
- name: Test LFC.sh with custom output directory
67+
run: |
68+
set -e
69+
CUSTOM_OUTPUT_DIR="/tmp/custom_lfc_run"
70+
CUSTOM_OUTPUT_BASENAME="custom_lfc_run"
71+
CUSTOM_TARBALL="/tmp/${CUSTOM_OUTPUT_BASENAME}.tar.gz"
72+
CUSTOM_EXTRACT_DIR="/tmp/extracted_custom_output"
73+
74+
echo "--- Running LFC.sh with custom output directory: $CUSTOM_OUTPUT_DIR ---"
75+
sudo ./LFC/LFC.sh "$CUSTOM_OUTPUT_DIR"
76+
77+
echo "--- Verifying custom output ---"
78+
if [ -f "$CUSTOM_TARBALL" ]; then
79+
echo "Custom output tarball $CUSTOM_TARBALL created successfully."
80+
mkdir -p "$CUSTOM_EXTRACT_DIR"
81+
sudo tar -xzf "$CUSTOM_TARBALL" -C "$CUSTOM_EXTRACT_DIR"
82+
83+
LOG_FILE_PATH="$CUSTOM_EXTRACT_DIR/${CUSTOM_OUTPUT_BASENAME}/log_file.log"
84+
if [ -f "$LOG_FILE_PATH" ]; then
85+
echo "log_file.log found in extracted custom output."
86+
if grep -q "Artifact collection completed" "$LOG_FILE_PATH"; then
87+
echo "Artifact collection completed message found."
88+
else
89+
echo "Error: Artifact collection completed message NOT found in log."
90+
cat "$LOG_FILE_PATH"
91+
exit 1
92+
fi
93+
else
94+
echo "Error: log_file.log not found in extracted custom output."
95+
ls -R "$CUSTOM_EXTRACT_DIR"
96+
exit 1
97+
fi
98+
99+
SYSTEM_ANALYSIS_PATH="$CUSTOM_EXTRACT_DIR/${CUSTOM_OUTPUT_BASENAME}/System_Analysis"
100+
if [ -d "$SYSTEM_ANALYSIS_PATH" ]; then
101+
echo "System_Analysis directory found in extracted custom output."
102+
else
103+
echo "Error: System_Analysis directory not found in extracted custom output."
104+
ls -R "$CUSTOM_EXTRACT_DIR"
105+
exit 1
106+
fi
107+
sudo rm -rf "$CUSTOM_EXTRACT_DIR"
108+
else
109+
echo "Error: Custom output tarball $CUSTOM_TARBALL not found."
110+
exit 1
111+
fi
112+
sudo rm "$CUSTOM_TARBALL"
113+
114+
- name: Test LFC.sh with --no-osquery flag
115+
run: |
116+
set -e
117+
NO_OSQUERY_OUTPUT_DIR="/tmp/no_osquery_run"
118+
NO_OSQUERY_OUTPUT_BASENAME="no_osquery_run"
119+
NO_OSQUERY_TARBALL="/tmp/${NO_OSQUERY_OUTPUT_BASENAME}.tar.gz"
120+
NO_OSQUERY_EXTRACT_DIR="/tmp/extracted_no_osquery_output"
121+
122+
echo "--- Running LFC.sh with --no-osquery and output dir: $NO_OSQUERY_OUTPUT_DIR ---"
123+
sudo ./LFC/LFC.sh "$NO_OSQUERY_OUTPUT_DIR" --no-osquery
124+
125+
echo "--- Verifying --no-osquery output ---"
126+
if [ -f "$NO_OSQUERY_TARBALL" ]; then
127+
echo "--no-osquery output tarball $NO_OSQUERY_TARBALL created successfully."
128+
mkdir -p "$NO_OSQUERY_EXTRACT_DIR"
129+
sudo tar -xzf "$NO_OSQUERY_TARBALL" -C "$NO_OSQUERY_EXTRACT_DIR"
130+
131+
LOG_FILE_PATH="$NO_OSQUERY_EXTRACT_DIR/${NO_OSQUERY_OUTPUT_BASENAME}/log_file.log"
132+
if [ -f "$LOG_FILE_PATH" ]; then
133+
echo "log_file.log found in extracted --no-osquery output."
134+
if grep -q "Skipping osquery collection as per user request." "$LOG_FILE_PATH"; then
135+
echo "Osquery skip message (user request) found in log."
136+
else
137+
echo "Error: Osquery skip message (user request) NOT found in log."
138+
cat "$LOG_FILE_PATH"
139+
exit 1
140+
fi
141+
if grep -q "Artifact collection completed" "$LOG_FILE_PATH"; then
142+
echo "Artifact collection completed message found."
143+
else
144+
echo "Error: Artifact collection completed message NOT found in log."
145+
cat "$LOG_FILE_PATH"
146+
exit 1
147+
fi
148+
else
149+
echo "Error: log_file.log not found in extracted --no-osquery output."
150+
ls -R "$NO_OSQUERY_EXTRACT_DIR"
151+
exit 1
152+
fi
153+
154+
OSQUERY_DIR_PATH="$NO_OSQUERY_EXTRACT_DIR/${NO_OSQUERY_OUTPUT_BASENAME}/osquery"
155+
if [ ! -d "$OSQUERY_DIR_PATH" ]; then
156+
echo "osquery directory correctly not found in --no-osquery output."
157+
else
158+
echo "Error: osquery directory WAS FOUND in --no-osquery output."
159+
ls -R "$NO_OSQUERY_EXTRACT_DIR/${NO_OSQUERY_OUTPUT_BASENAME}"
160+
exit 1
161+
fi
162+
sudo rm -rf "$NO_OSQUERY_EXTRACT_DIR"
163+
else
164+
echo "Error: --no-osquery output tarball $NO_OSQUERY_TARBALL not found."
165+
exit 1
166+
fi
167+
sudo rm "$NO_OSQUERY_TARBALL"

0 commit comments

Comments
 (0)