mirror of
https://gitee.com/bianbu-linux/factorytest
synced 2025-04-18 19:34:59 -04:00
Update for v1.0.5
This commit is contained in:
parent
95d4322ff9
commit
a2c1d15e40
6 changed files with 137 additions and 21 deletions
|
@ -16,6 +16,8 @@
|
|||
"poweroff_button": "关机",
|
||||
"camera": "摄像头",
|
||||
"audio": "音频",
|
||||
"others": "其他项",
|
||||
"sn": "序列号",
|
||||
"test_table_head": ["模块", "测试项", "结果"],
|
||||
"test_step": "测试步骤",
|
||||
"start_button": "开始",
|
||||
|
@ -43,6 +45,8 @@
|
|||
"poweroff_button": "Shutdown",
|
||||
"camera": "Camera",
|
||||
"audio": "Microphone",
|
||||
"others": "Others",
|
||||
"sn": "Serial number",
|
||||
"test_table_head": ["Module", "Test Item", "Result"],
|
||||
"test_step": "Test Step",
|
||||
"start_button": "Start",
|
||||
|
|
|
@ -4,16 +4,18 @@ This is the "View" of the MVC world.
|
|||
"""
|
||||
|
||||
from PyQt5.QtCore import Qt, QTimer, QUrl
|
||||
from PyQt5.QtGui import QColor
|
||||
from PyQt5.QtGui import QColor, QPixmap, QImage
|
||||
from PyQt5.QtWidgets import (
|
||||
QMainWindow,
|
||||
QFrame,
|
||||
QHBoxLayout,
|
||||
QVBoxLayout,
|
||||
QGridLayout,
|
||||
QLabel,
|
||||
QPushButton,
|
||||
QGroupBox,
|
||||
QTableWidget,
|
||||
QAbstractItemView,
|
||||
QStatusBar,
|
||||
QTableWidgetItem,
|
||||
QHeaderView
|
||||
|
@ -21,6 +23,9 @@ from PyQt5.QtWidgets import (
|
|||
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
|
||||
from PyQt5.QtMultimediaWidgets import QVideoWidget
|
||||
|
||||
import qrcode
|
||||
from PIL.ImageQt import ImageQt
|
||||
|
||||
import os
|
||||
import time
|
||||
import threading
|
||||
|
@ -184,7 +189,7 @@ class MainWindow(QMainWindow, SimpleLang):
|
|||
# | auto | camera |
|
||||
# | | |
|
||||
# -------------------
|
||||
# | manual | audio |
|
||||
# | manual | others |
|
||||
# | | |
|
||||
# -------------------
|
||||
self.tests = QFrame(self.content)
|
||||
|
@ -200,11 +205,21 @@ class MainWindow(QMainWindow, SimpleLang):
|
|||
self.media_player.setVideoOutput(video_widget)
|
||||
camera_box_layout.addWidget(video_widget)
|
||||
|
||||
audio_box = QGroupBox(self.get_text('audio'), self.tests)
|
||||
audio_box_layout = QVBoxLayout(audio_box)
|
||||
# others
|
||||
self.others_box = QGroupBox(self.get_text('others'), self.tests)
|
||||
others_box_layout = QVBoxLayout(self.others_box)
|
||||
|
||||
# item
|
||||
self.others_item = QFrame(self.others_box)
|
||||
self.others_item_layout = QHBoxLayout(self.others_item)
|
||||
others_box_layout.addWidget(self.others_item)
|
||||
|
||||
sn = self._get_sn()
|
||||
if sn:
|
||||
self._setup_sn_qrcode(sn)
|
||||
|
||||
self.tests_layout.addWidget(camera_box, 0, 1, 4, 1)
|
||||
self.tests_layout.addWidget(audio_box, 4, 1, 3, 1)
|
||||
self.tests_layout.addWidget(self.others_box, 4, 1, 3, 1)
|
||||
|
||||
self.tests_layout.setRowStretch(0, 4)
|
||||
self.tests_layout.setRowStretch(1, 4)
|
||||
|
@ -234,6 +249,7 @@ class MainWindow(QMainWindow, SimpleLang):
|
|||
|
||||
table = QTableWidget(box)
|
||||
table.setStyleSheet('QTableWidget { background-color: black; color: white; }')
|
||||
table.setEditTriggers(QAbstractItemView.NoEditTriggers)
|
||||
table.setColumnCount(len(columns))
|
||||
table.setHorizontalHeaderLabels(columns)
|
||||
for i in range(len(columns)):
|
||||
|
@ -251,6 +267,35 @@ class MainWindow(QMainWindow, SimpleLang):
|
|||
|
||||
self.tests_layout.addWidget(box, row, column, row_span, column_span)
|
||||
|
||||
def _create_qrcode(self, data):
|
||||
qr = qrcode.QRCode(
|
||||
version=1,
|
||||
error_correction=qrcode.constants.ERROR_CORRECT_L,
|
||||
box_size=8,
|
||||
border=0,
|
||||
)
|
||||
qr.add_data(data)
|
||||
qr.make(fit=True)
|
||||
|
||||
img = qr.make_image(fill='black', back_color='white')
|
||||
qt_image = ImageQt(img).convertToFormat(QImage.Format_RGB32)
|
||||
return QPixmap.fromImage(qt_image)
|
||||
|
||||
def _setup_sn_qrcode(self, sn):
|
||||
sn_qrcode = QFrame(self.others_item)
|
||||
sn_qrcode_layout = QVBoxLayout(sn_qrcode)
|
||||
|
||||
qr_label = QLabel(sn_qrcode)
|
||||
qr_label.setAlignment(Qt.AlignCenter)
|
||||
qr_label.setPixmap(self._create_qrcode(sn))
|
||||
sn_qrcode_layout.addWidget(qr_label)
|
||||
|
||||
sn_label = QLabel(f'{self.get_text("sn")}: {sn}', sn_qrcode)
|
||||
sn_qrcode_layout.addWidget(sn_label)
|
||||
|
||||
self.others_item_layout.addWidget(sn_qrcode)
|
||||
|
||||
|
||||
######################################################
|
||||
# Handlers for setting a new project
|
||||
######################################################
|
||||
|
@ -433,6 +478,12 @@ class MainWindow(QMainWindow, SimpleLang):
|
|||
# update "run selected" button enabled state
|
||||
self.set_selected_button_state()
|
||||
|
||||
def _get_sn(self):
|
||||
path = '/proc/device-tree/serial-number'
|
||||
if os.path.exists(path):
|
||||
with open(path, 'r') as f:
|
||||
return f.readline().strip()
|
||||
|
||||
def _get_fw_version(self):
|
||||
path = '/etc/bianbu_version'
|
||||
if os.path.exists(path):
|
||||
|
|
13
gpu.sh
Executable file
13
gpu.sh
Executable file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
|
||||
while true
|
||||
do
|
||||
glmark2-es2-wayland --off-screen --run-forever > /tmp/glmark2.log
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "gpu test completed successfully."
|
||||
else
|
||||
echo "gpu test encountered an error or exited prematurely."
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
break
|
||||
fi
|
||||
done
|
28
memtester.sh
28
memtester.sh
|
@ -1,21 +1,17 @@
|
|||
#!/bin/bash
|
||||
|
||||
test_size=100M
|
||||
test_loop=1000
|
||||
test_loop=1
|
||||
|
||||
echo "Starting memtester..."
|
||||
memtester $test_size $test_loop &
|
||||
while true
|
||||
do
|
||||
memtester $test_size $test_loop > /dev/null
|
||||
|
||||
# Get the process ID of the memtester instance
|
||||
memtester_pid=$!
|
||||
|
||||
# Wait for the process to finish
|
||||
wait $memtester_pid
|
||||
|
||||
# Check the exit status of memtester process
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "memtester test completed successfully."
|
||||
else
|
||||
echo "memtester test encountered an error or exited prematurely."
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
fi
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "memtester test completed successfully."
|
||||
else
|
||||
echo "memtester test encountered an error or exited prematurely."
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
|
|
@ -5,4 +5,6 @@ ROOT=$(dirname "$(readlink -f "$0")")
|
|||
pushd $ROOT > /dev/null
|
||||
./stress-ng.sh &
|
||||
./memtester.sh &
|
||||
./gpu.sh &
|
||||
./vpu.sh &
|
||||
popd > /dev/null
|
||||
|
|
50
vpu.sh
Executable file
50
vpu.sh
Executable file
|
@ -0,0 +1,50 @@
|
|||
#!/bin/bash -e
|
||||
|
||||
log="/tmp/vpu-test.log"
|
||||
h264="h264_w1920_h1080_f25_r4_p1_8bit_54f_11mb_high_cabac.264"
|
||||
decode_yuv="/tmp/decode.yuv"
|
||||
decode_md5="e59c9318e3f733d016ebfcdec98a95fb"
|
||||
yuv="yuv420p_w1280_h720_30f.yuv"
|
||||
encode_264="/tmp/encode.264"
|
||||
encode_md5="55ceae7750bdc3906dd427e221c0317b"
|
||||
|
||||
while true
|
||||
do
|
||||
rm -f $log
|
||||
|
||||
# decode routine
|
||||
echo "`date`" >> $log
|
||||
rm -f $decode_yuv
|
||||
mvx_decoder -f raw /opt/factorytest/res/h264_w1920_h1080_f25_r4_p1_8bit_54f_11mb_high_cabac.264 $decode_yuv >> $log
|
||||
if [ ! -f $decode_yuv ]
|
||||
then
|
||||
echo "vpu decode encountered an error"
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
break
|
||||
fi
|
||||
md5=`md5sum $decode_yuv | awk '{ print $1 }'`
|
||||
if [ "$md5" != "$decode_md5" ]
|
||||
then
|
||||
echo "vpu decode data md5 unmatch"
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
break
|
||||
fi
|
||||
|
||||
# encode routine
|
||||
echo "`date`" >> $log
|
||||
rm -f $encode_264
|
||||
mvx_encoder -f raw -w 1280 -h 720 /opt/factorytest/res/yuv420p_w1280_h720_30f.yuv $encode_264 >> $log
|
||||
if [ ! -f $encode_264 ]
|
||||
then
|
||||
echo "vpu encode encountered an error"
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
break
|
||||
fi
|
||||
md5=`md5sum $encode_264 | awk '{ print $1 }'`
|
||||
if [ "$md5" != "$encode_md5" ]
|
||||
then
|
||||
echo "vpu encode data md5 unmatch"
|
||||
echo none > /sys/class/leds/sys-led/trigger
|
||||
break
|
||||
fi
|
||||
done
|
Loading…
Add table
Reference in a new issue