Sample - Bash Job

The following is a sample Python code for calling QDC public APIs to test using Bash script.

  • Available chipsets

Bash jobs can only be used with job targets where the ChipsetCategory is IOT and the OS is Linux. To get the list of available targets, call this QDC public API.

  • Artifacts limitation
TypeArtifacts NumberSuffix
test packageoptional.zip
test scriptoptional.zip
  • Sample code is similar to Monkey Job except Section (1) part
# Section (1): preparing the parameters and submitting the job
job_device_target = "QCS6490"  # target chipset
test_script_file = r"./BashTestExample.zip"  # same name as the test script prepared

test_script_response = qdc_api.upload_file(public_api_client, test_script_file, ArtifactType.TESTSCRIPT)
job_target_id = qdc_api.get_target_id(public_api_client, job_device_target)

job_id = qdc_api.submit_job(public_api_client=public_api_client,
                            target_id=job_target_id,
                            job_name="Example Job",
                            external_job_id="ExJobId001",
                            job_type=JobType.AUTOMATED,
                            job_mode=JobMode.APPLICATION,
                            timeout=600,
                            test_framework=TestFramework.BASH,
                            entry_script="sh /data/local/tmp/TestContent/BashTestExample/ScriptToRun.sh",
                            job_artifacts=[test_script_response],
                            monkey_events=None,
                            monkey_session_timeout=None,
                            job_parameters=[])
  • Sample Test Packages

Create a file named ScriptToRun.sh, copy the following code into it, zip the file to BashTestExample.zip, and and move the zip file into the same folder as hello_qdc.py.

#!/bin/sh
echo test starting
sleep 10
mount -o rw,remount /

# Function to create QDCResults.xml with JUnit-compatible content in /data/local/tmp
create_junit_results() {
    echo '<?xml version="1.0" encoding="UTF-8"?>' > /data/local/tmp/QDCResults.xml
    echo '<testsuites>' >> /data/local/tmp/QDCResults.xml
    echo '  <testsuite name="QDC Test Suite" tests="1" failures="0" errors="0" skipped="0">' >> /data/local/tmp/QDCResults.xml
    echo '    <testcase classname="QDC.Test" name="Test1">' >> /data/local/tmp/QDCResults.xml
    echo '    </testcase>' >> /data/local/tmp/QDCResults.xml
    echo '  </testsuite>' >> /data/local/tmp/QDCResults.xml
    echo '</testsuites>' >> /data/local/tmp/QDCResults.xml
}

# Function to create log files in /data/local/tmp/QDC_logs
create_log_files() {
    mkdir -p /data/local/tmp/QDC_logs
    echo 'Log entry: Test started' > /data/local/tmp/QDC_logs/log.txt
    echo 'Log entry: Test completed' >> /data/local/tmp/QDC_logs/log.txt
}

# Call the functions to create the files
create_junit_results
create_log_files

mount -o rw,remount /
touch /data/local/tmp/QDCTestDone.txt
echo test done