Skip to content

Commit

Permalink
Merge pull request #1466 from grvvy/hub_update
Browse files Browse the repository at this point in the history
ci: usb hub ppps handling overhaul
  • Loading branch information
mossmann authored Jul 17, 2024
2 parents 2d9a7db + c9c6d76 commit 17f3943
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 28 deletions.
22 changes: 19 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
# Sandbox test environment for HackRF
# Environment for HackRF HIL testing with Jenkins CI
FROM ubuntu:22.04
USER root

# Override interactive installations and install prerequisites
# Copy usb hub script from Jenkins' container
COPY --from=gsg-jenkins /startup/hubs.py /startup/hubs.py
COPY --from=gsg-jenkins /startup/.hubs /startup/.hubs
RUN ln -s /startup/hubs.py /usr/local/bin/hubs

# Override interactive installations and install software dependencies
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
curl \
dfu-util \
gcc-arm-none-eabi \
git \
Expand All @@ -16,8 +22,18 @@ RUN apt-get update && apt-get install -y \
python3 \
python3-pip \
python3-yaml \
usbutils \
&& rm -rf /var/lib/apt/lists/*
RUN pip3 install git+https://github.com/CapableRobot/CapableRobot_USBHub_Driver --upgrade

# Install USB hub PPPS dependencies
RUN pip3 install python-dotenv git+https://github.com/CapableRobot/CapableRobot_USBHub_Driver --upgrade
RUN curl -L https://github.com/mvp/uhubctl/archive/refs/tags/v2.5.0.tar.gz > uhubctl-2.5.0.tar.gz \
&& mkdir uhubctl-2.5.0 \
&& tar -xvzf uhubctl-2.5.0.tar.gz -C uhubctl-2.5.0 --strip-components 1 \
&& rm uhubctl-2.5.0.tar.gz \
&& cd uhubctl-2.5.0 \
&& make \
&& make install

# Inform Docker that the container is listening on port 8080 at runtime
EXPOSE 8080
30 changes: 15 additions & 15 deletions Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
pipeline {
agent {
dockerfile {
args '--group-add=46 --device-cgroup-rule="c 189:* rmw" -v /dev/bus/usb:/dev/bus/usb'
}
}
agent any
stages {
stage('Build (Host)') {
stage('Build Docker Image') {
steps {
sh './ci-scripts/install-host.sh'
sh 'docker build -t hackrf https://github.com/greatscottgadgets/hackrf.git'
}
}
stage('Build (Firmware)') {
steps {
sh './ci-scripts/install-firmware.sh'
stage('Test Suite') {
agent {
docker {
image 'hackrf'
reuseNode true
args '--group-add=20 --group-add=46 --device-cgroup-rule="c 189:* rmw" --device-cgroup-rule="c 166:* rmw" -v /dev/bus/usb:/dev/bus/usb -e TESTER=0000000000000000325866e629a25623 -e EUT=RunningFromRAM'
}
}
}
stage('Test') {
steps {
sh './ci-scripts/configure-hubs.sh --off'
sh './ci-scripts/install-host.sh'
sh './ci-scripts/install-firmware.sh'
sh 'hubs all off'
retry(3) {
sh './ci-scripts/test-host.sh'
}
Expand All @@ -32,9 +32,9 @@ pipeline {
retry(3) {
sh 'python3 ci-scripts/test-transfer.py rx'
}
sh './ci-scripts/configure-hubs.sh --off'
sh 'hubs all off'
sh 'python3 ci-scripts/test-sgpio-debug.py'
sh './ci-scripts/configure-hubs.sh --reset'
sh 'hubs all reset'
}
}
}
Expand Down
4 changes: 0 additions & 4 deletions ci-scripts/configure-hubs.sh

This file was deleted.

2 changes: 1 addition & 1 deletion ci-scripts/test-firmware-program.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
usbhub --disable-i2c --hub D9D1 power state --port 2 --reset
hubs hackrf_dfu reset
sleep 1s
dfu-util --device 1fc9:000c --alt 0 --download firmware/hackrf_usb/build/hackrf_usb.dfu
sleep 1s
Expand Down
2 changes: 1 addition & 1 deletion ci-scripts/test-host.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
usbhub --disable-i2c --hub D9D1 power state --port 2 --reset
hubs hackrf_dfu reset
sleep 1s
host/build/hackrf-tools/src/hackrf_info
EXIT_CODE="$?"
Expand Down
8 changes: 4 additions & 4 deletions ci-scripts/test-transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@
import subprocess
import time
import sys
from os import environ

EUT = "RunningFromRAM"
TESTER = "0000000000000000325866e629a25623"
EUT = environ.get('EUT')
TESTER = environ.get('TESTER')
PASS, FAIL = range(2)


Expand Down Expand Up @@ -87,8 +88,7 @@ def check_signal(freq, bins):

def main():
write_bytes()
tester_hub_on = subprocess.Popen(["usbhub", "--disable-i2c", "--hub", "624C",
"power", "state", "--port", "2", "--reset"])
tester_hub_on = subprocess.Popen(["hubs", "hackrf", "reset"])
tester_hub_on.wait()
time.sleep(1)
eut_clkout_on = subprocess.Popen(["host/build/hackrf-tools/src/hackrf_clock",
Expand Down

0 comments on commit 17f3943

Please sign in to comment.