提交 bbb93f16 编写于 作者: A air9

update hwcert to hwcompatible

...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
# Create: 2020-04-01 # Create: 2020-04-01
NAME := oec-hardware NAME := oec-hardware
VERSION_PY := hwcert/version.py VERSION_PY := hwcompatible/version.py
.PHONY: all clean install .PHONY: all clean install
SUBDIRS := hwcert tests server scripts SUBDIRS := hwcompatible tests server scripts
all: $(VERSION_PY) all: $(VERSION_PY)
for i in $(SUBDIRS); do $(MAKE) -C $$i DESTDIR=$(DESTDIR); done for i in $(SUBDIRS); do $(MAKE) -C $$i DESTDIR=$(DESTDIR); done
...@@ -25,8 +25,8 @@ $(VERSION_PY): ...@@ -25,8 +25,8 @@ $(VERSION_PY):
@echo "name = '$(NAME)'" >> $(VERSION_PY) @echo "name = '$(NAME)'" >> $(VERSION_PY)
install: install:
mkdir -p $(DESTDIR)/usr/share/eulercert mkdir -p $(DESTDIR)/usr/share/oech
mkdir -p $(DESTDIR)/var/eulercert mkdir -p $(DESTDIR)/var/oech
for i in $(SUBDIRS); do $(MAKE) -C $$i DESTDIR=$(DESTDIR) install; done for i in $(SUBDIRS); do $(MAKE) -C $$i DESTDIR=$(DESTDIR) install; done
clean: clean:
......
...@@ -47,8 +47,8 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂 ...@@ -47,8 +47,8 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂
``` ```
. .
├── hwcert 框架主功能 ├── hwcompatible 框架主功能
│ ├── certification.py 框架核心功能 │ ├── compatibility.py 框架核心功能
│ ├── client.py 上传测试结果到服务端 │ ├── client.py 上传测试结果到服务端
│ ├── command.py bash命令执行封装 │ ├── command.py bash命令执行封装
│ ├── commandUI.py 命令行交互工具 │ ├── commandUI.py 命令行交互工具
...@@ -61,18 +61,18 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂 ...@@ -61,18 +61,18 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂
│ ├── sysinfo.py 收集系统信息 │ ├── sysinfo.py 收集系统信息
│ └── test.py 测试套模板 │ └── test.py 测试套模板
├── scripts 工具脚本 ├── scripts 工具脚本
│ ├── eulercert 框架命令行工具 │ ├── oech 框架命令行工具
│ ├── eulercert-server.service 框架服务端 service 文件,用于启动 web 服务器 │ ├── oech-server.service 框架服务端 service 文件,用于启动 web 服务器
│ ├── eulercert.service 框架客户端 service 文件,用于接管 reboot 用例 │ ├── oech.service 框架客户端 service 文件,用于接管 reboot 用例
│ └── kernelrelease.json 规范可用于认证的系统和内核版本 │ └── kernelrelease.json 规范可用于认证的系统和内核版本
├── server 服务端 ├── server 服务端
│ ├── eulercert-server-pre.sh 服务预执行脚本 │ ├── oech-server-pre.sh 服务预执行脚本
│ ├── results/ 测试结果存放目录 │ ├── results/ 测试结果存放目录
│ ├── server.py 服务端主程序 │ ├── server.py 服务端主程序
│ ├── static/ 图片存放目录 │ ├── static/ 图片存放目录
│ ├── templates/ 网页模板存放目录 │ ├── templates/ 网页模板存放目录
│ ├── uwsgi.conf nginx 服务配置 │ ├── uwsgi.conf nginx 服务配置
│ └── uwsgi.ini uwsgi 服务配置 │ └── uwsgi.ini uwsgi 服务配置
└── tests 测试套 └── tests 测试套
``` ```
...@@ -156,7 +156,7 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂 ...@@ -156,7 +156,7 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂
3. 启动服务。本服务默认使用 8080 端口,同时搭配 nginx(默认端口 80)提供 web 服务,请保证这些端口未被占用。 3. 启动服务。本服务默认使用 8080 端口,同时搭配 nginx(默认端口 80)提供 web 服务,请保证这些端口未被占用。
``` ```
systemctl start eulercert-server.service systemctl start oech-server.service
systemctl start nginx.service systemctl start nginx.service
``` ```
...@@ -170,32 +170,32 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂 ...@@ -170,32 +170,32 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂
## 验证安装正确性 ## 验证安装正确性
客户端输入 `eulercert` 命令,可正常运行,则表示安装成功。如果安装有任何问题,可反馈至该邮箱:oecompatibility@openeuler.org 。 客户端输入 `oech` 命令,可正常运行,则表示安装成功。如果安装有任何问题,可反馈至该邮箱:oecompatibility@openeuler.org 。
# 使用指导 # 使用指导
## 前提条件 ## 前提条件
* `/usr/share/eulercert/kernelrelease.json`文件中列出了当前支持的所有系统版本,使用`uname -a` 命令确认当前系统内核版本是否属于框架支持的版本。 * `/usr/share/oech/kernelrelease.json`文件中列出了当前支持的所有系统版本,使用`uname -a` 命令确认当前系统内核版本是否属于框架支持的版本。
* 框架默认会扫描所有网卡,对网卡进行测试前,请自行筛选被测网卡,并给它配上能`ping`通服务端的 ip ;如果是测试客户端 `InfiniBand`网卡,服务端也必须有一个 `InfiniBand`网卡并提前配好 ip 。 * 框架默认会扫描所有网卡,对网卡进行测试前,请自行筛选被测网卡,并给它配上能`ping`通服务端的 ip ;如果是测试客户端 `InfiniBand`网卡,服务端也必须有一个 `InfiniBand`网卡并提前配好 ip 。
## 使用步骤 ## 使用步骤
1. 在客户端启动测试框架。在客户端启动 `eulercert`,其中 `ID``URL` 可以按需填写`Server` 必须填写为客户端可以直接访问的服务器域名或 ip,用于展示测试报告和作网络测试的服务端。 1. 在客户端启动测试框架。在客户端启动 `oech`,其中 `ID``URL` 可以按需填写,`ID` 建议填写gitee上的issue ID`Server` 必须填写为客户端可以直接访问的服务器域名或 ip,用于展示测试报告和作网络测试的服务端。
``` ```
# eulercert # oech
The openEuler Hardware Certification Test Suite The openEuler Hardware Compatibility Test Suite
Please provide your Certification ID: Please provide your Compatibility Test ID:
Please provide your Product URL: Please provide your Product URL:
Please provide the Certification Server (Hostname or Ipaddr): Please provide the Compatibility Test Server (Hostname or Ipaddr):
``` ```
2. 进入测试套选择界面。在用例选择界面,框架将自动扫描硬件并选取当前环境可供测试的测试套,输入 `edit` 可以进入测试套选择界面。 2. 进入测试套选择界面。在用例选择界面,框架将自动扫描硬件并选取当前环境可供测试的测试套,输入 `edit` 可以进入测试套选择界面。
``` ```
These tests are recommended to complete the certification: These tests are recommended to complete the compatibility test:
No. Run-Now? Status Class Device No. Run-Now? Status Class Device
1 yes NotRun acpi 1 yes NotRun acpi
2 yes NotRun clock 2 yes NotRun clock
...@@ -243,7 +243,7 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂 ...@@ -243,7 +243,7 @@ OS 厂商为了扩大自己产品的兼容性范围,常常寻求与硬件厂
------------- Summary ------------- ------------- Summary -------------
ethernet-enp3s0 PASS ethernet-enp3s0 PASS
system FAIL system FAIL
Log saved to /usr/share/eulercert/logs/eulercert-20200228210118-TnvUJxFb50.tar succ. Log saved to /usr/share/oech/logs/oech-20200228210118-TnvUJxFb50.tar succ.
Do you want to submit last result? (y|n) y Do you want to submit last result? (y|n) y
Uploading... Uploading...
Successfully uploaded result to server X.X.X.X. Successfully uploaded result to server X.X.X.X.
......
docs/result-qemu.png

25.2 KB | W: | H:

docs/result-qemu.png

10.5 KB | W: | H:

docs/result-qemu.png
docs/result-qemu.png
docs/result-qemu.png
docs/result-qemu.png
  • 2-up
  • Swipe
  • Onion skin
docs/results.png

13.9 KB | W: | H:

docs/results.png

5.2 KB | W: | H:

docs/results.png
docs/results.png
docs/results.png
docs/results.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -23,15 +23,15 @@ ...@@ -23,15 +23,15 @@
.PHONY: install clean .PHONY: install clean
HWCERT_CLASS_LIB := /usr/share/eulercert/lib HWCERT_CLASS_LIB := /usr/share/oech/lib
all: ; all: ;
install: install:
rm -rf $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcert rm -rf $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcompatible
mkdir -p $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcert mkdir -p $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcompatible
cp -r ./*.py $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcert/ cp -r ./*.py $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcompatible/
clean: clean:
rm -rf $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcert rm -rf $(DESTDIR)$(HWCERT_CLASS_LIB)/hwcompatible
...@@ -67,7 +67,7 @@ class Client: ...@@ -67,7 +67,7 @@ class Client:
if __name__ == '__main__': if __name__ == '__main__':
c = Client(' Taishan 2280', ' Certid-123523') c = Client(' Taishan 2280', ' Testid-123523')
import sys import sys
file = sys.argv[1] file = sys.argv[1]
c.upload(file) c.upload(file)
......
...@@ -39,7 +39,7 @@ class EulerCertification(): ...@@ -39,7 +39,7 @@ class EulerCertification():
self.client = None self.client = None
def run(self): def run(self):
print("The openEuler Hardware Certification Test Suite") print("The openEuler Hardware Compatibility Test Suite")
self.load() self.load()
certdevice = CertDevice() certdevice = CertDevice()
...@@ -81,7 +81,7 @@ class EulerCertification(): ...@@ -81,7 +81,7 @@ class EulerCertification():
return False return False
def clean(self): def clean(self):
if self.ui.prompt_confirm("Are you sure to clean all certification data?"): if self.ui.prompt_confirm("Are you sure to clean all compatibility test data?"):
try: try:
Command("rm -rf %s" % CertEnv.certificationfile).run() Command("rm -rf %s" % CertEnv.certificationfile).run()
Command("rm -rf %s" % CertEnv.factoryfile).run() Command("rm -rf %s" % CertEnv.factoryfile).run()
...@@ -107,7 +107,7 @@ class EulerCertification(): ...@@ -107,7 +107,7 @@ class EulerCertification():
cert_id = self.certification.get_certify() cert_id = self.certification.get_certify()
hardware_info = self.certification.get_hardware() hardware_info = self.certification.get_hardware()
self.client = Client(hardware_info, cert_id) self.client = Client(hardware_info, cert_id)
print(" Certification ID: ".ljust(30) + cert_id) print(" Compatibility Test ID: ".ljust(30) + cert_id)
print(" Hardware Info: ".ljust(30) + hardware_info) print(" Hardware Info: ".ljust(30) + hardware_info)
print(" Product URL: ".ljust(30) + self.certification.get_url()) print(" Product URL: ".ljust(30) + self.certification.get_url())
print(" OS Info: ".ljust(30) + self.certification.get_os()) print(" OS Info: ".ljust(30) + self.certification.get_os())
...@@ -126,7 +126,7 @@ class EulerCertification(): ...@@ -126,7 +126,7 @@ class EulerCertification():
cwd = os.getcwd() cwd = os.getcwd()
os.chdir(os.path.dirname(doc_dir)) os.chdir(os.path.dirname(doc_dir))
dir_name = "eulercert-" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "-" + job.job_id dir_name = "oech-" + datetime.datetime.now().strftime("%Y%m%d%H%M%S") + "-" + job.job_id
pack_name = dir_name +".tar" pack_name = dir_name +".tar"
cmd = Command("tar -cf %s %s" % (pack_name, dir_name)) cmd = Command("tar -cf %s %s" % (pack_name, dir_name))
try: try:
...@@ -145,7 +145,7 @@ class EulerCertification(): ...@@ -145,7 +145,7 @@ class EulerCertification():
def submit(self): def submit(self):
packages = list() packages = list()
pattern = re.compile("^eulercert-[0-9]{14}-[0-9a-zA-Z]{10}.tar$") pattern = re.compile("^oech-[0-9]{14}-[0-9a-zA-Z]{10}.tar$")
for (root, dirs, files) in os.walk(CertEnv.datadirectory): for (root, dirs, files) in os.walk(CertEnv.datadirectory):
break break
packages.extend(filter(pattern.search, files)) packages.extend(filter(pattern.search, files))
...@@ -358,7 +358,7 @@ class EulerCertification(): ...@@ -358,7 +358,7 @@ class EulerCertification():
else: else:
test["run"] = True test["run"] = True
os.system("clear") os.system("clear")
print("These tests are recommended to complete the certification:") print("These tests are recommended to complete the compatibility test:")
self.show_tests() self.show_tests()
action = self.ui.prompt("Ready to begin testing?", ["run", "edit", "quit"]) action = self.ui.prompt("Ready to begin testing?", ["run", "edit", "quit"])
action = action.lower() action = action.lower()
......
...@@ -79,17 +79,17 @@ class CertDocument(Document): ...@@ -79,17 +79,17 @@ class CertDocument(Document):
print(e) print(e)
sysinfo = SysInfo(CertEnv.releasefile) sysinfo = SysInfo(CertEnv.releasefile)
self.document["eulerversion"] = sysinfo.product + " " + sysinfo.get_version() self.document["OS"] = sysinfo.product + " " + sysinfo.get_version()
self.document["kernelversion"] = sysinfo.kernel self.document["kernel"] = sysinfo.kernel
self.document["certify"] = CommandUI().prompt("Please provide your Certification ID:") self.document["ID"] = CommandUI().prompt("Please provide your Compatibility Test ID:")
self.document["Product URL"] = CommandUI().prompt("Please provide your Product URL:") self.document["Product URL"] = CommandUI().prompt("Please provide your Product URL:")
self.document["server"] = CommandUI().prompt("Please provide the Certification Server (Hostname or Ipaddr):") self.document["server"] = CommandUI().prompt("Please provide the Compatibility Test Server (Hostname or Ipaddr):")
def get_hardware(self): def get_hardware(self):
return self.document["Manufacturer"] + " " + self.document["Product Name"] + " " + self.document["Version"] return self.document["Manufacturer"] + " " + self.document["Product Name"] + " " + self.document["Version"]
def get_os(self): def get_os(self):
return self.document["eulerversion"] return self.document["OS"]
def get_server(self): def get_server(self):
return self.document["server"] return self.document["server"]
...@@ -98,10 +98,10 @@ class CertDocument(Document): ...@@ -98,10 +98,10 @@ class CertDocument(Document):
return self.document["Product URL"] return self.document["Product URL"]
def get_certify(self): def get_certify(self):
return self.document["certify"] return self.document["ID"]
def get_kernel(self): def get_kernel(self):
return self.document["kernelversion"] return self.document["kernel"]
class DeviceDocument(Document): class DeviceDocument(Document):
def __init__(self, filename, devices=list()): def __init__(self, filename, devices=list()):
......
...@@ -14,16 +14,16 @@ ...@@ -14,16 +14,16 @@
class CertEnv: class CertEnv:
environmentfile = "/etc/eulercert.json" environmentfile = "/etc/oech.json"
releasefile = "/etc/os-release" releasefile = "/etc/os-release"
datadirectory = "/var/eulercert" datadirectory = "/var/oech"
certificationfile = datadirectory + "/certification.json" certificationfile = datadirectory + "/compatibility.json"
devicefile = datadirectory + "/device.json" devicefile = datadirectory + "/device.json"
factoryfile = datadirectory + "/factory.json" factoryfile = datadirectory + "/factory.json"
rebootfile = datadirectory + "/reboot.json" rebootfile = datadirectory + "/reboot.json"
testdirectoy = "/usr/share/eulercert/lib/tests" testdirectoy = "/usr/share/oech/lib/tests"
logdirectoy = "/usr/share/eulercert/logs" logdirectoy = "/usr/share/oech/logs"
resultdirectoy = "/usr/share/eulercert/lib/server/results" resultdirectoy = "/usr/share/oech/lib/server/results"
kernelinfo = "/usr/share/eulercert/kernelrelease.json" kernelinfo = "/usr/share/oech/kernelrelease.json"
...@@ -21,7 +21,7 @@ from .env import CertEnv ...@@ -21,7 +21,7 @@ from .env import CertEnv
class Log(object): class Log(object):
def __init__(self, logname='eulercert.log', logdir='__temp__'): def __init__(self, logname='oech.log', logdir='__temp__'):
if not logdir: if not logdir:
curtime = datetime.datetime.now().isoformat() curtime = datetime.datetime.now().isoformat()
logdir = os.path.join(CertEnv.logdirectoy, curtime) logdir = os.path.join(CertEnv.logdirectoy, curtime)
......
...@@ -36,7 +36,7 @@ class Reboot: ...@@ -36,7 +36,7 @@ class Reboot:
test["reboot"] = False test["reboot"] = False
Command("rm -rf %s" % CertEnv.rebootfile).run(ignore_errors=True) Command("rm -rf %s" % CertEnv.rebootfile).run(ignore_errors=True)
Command("systemctl disable eulercert").run(ignore_errors=True) Command("systemctl disable oech").run(ignore_errors=True)
def setup(self): def setup(self):
if not (self.job and self.testname): if not (self.job and self.testname):
...@@ -62,9 +62,9 @@ class Reboot: ...@@ -62,9 +62,9 @@ class Reboot:
try: try:
Command("systemctl daemon-reload").run_quiet() Command("systemctl daemon-reload").run_quiet()
Command("systemctl enable eulercert").run_quiet() Command("systemctl enable oech").run_quiet()
except: except:
print("Error: enable eulercert.service fail.") print("Error: enable oech.service fail.")
return False return False
return True return True
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
%undefine __brp_mangle_shebangs %undefine __brp_mangle_shebangs
Name: oec-hardware Name: oec-hardware
Summary: openEuler Hardware Certification Test Suite Summary: openEuler Hardware Compatibility Test Suite
Version: %{version} Version: %{version}
Release: %{release} Release: %{release}
Group: Development/Tools Group: Development/Tools
...@@ -22,15 +22,15 @@ Requires: python3 ...@@ -22,15 +22,15 @@ Requires: python3
# server subpackage # server subpackage
%package server %package server
Summary: openEuler Hardware Certification Test Server Summary: openEuler Hardware Compatibility Test Server
Group: Development/Tools Group: Development/Tools
Requires: python3, python3-devel, nginx, qperf, psmisc Requires: python3, python3-devel, nginx, qperf, psmisc
%description %description
openEuler Hardware Certification Test Suite openEuler Hardware Compatibility Test Suite
%description server %description server
openEuler Hardware Certification Test Server openEuler Hardware Compatibility Test Server
%prep %prep
%setup -q -c %setup -q -c
...@@ -51,24 +51,24 @@ DESTDIR=$RPM_BUILD_ROOT make install ...@@ -51,24 +51,24 @@ DESTDIR=$RPM_BUILD_ROOT make install
%files %files
%defattr(-,root,root) %defattr(-,root,root)
/usr/bin/eulercert /usr/bin/oech
/usr/share/eulercert/kernelrelease.json /usr/share/oech/kernelrelease.json
/usr/share/eulercert/lib/hwcert /usr/share/oech/lib/hwcompatible
/usr/share/eulercert/lib/tests /usr/share/oech/lib/tests
/usr/lib/systemd/system/eulercert.service /usr/lib/systemd/system/oech.service
%dir /var/eulercert %dir /var/oech
%dir /usr/share/eulercert/lib %dir /usr/share/oech/lib
%dir /usr/share/eulercert %dir /usr/share/oech
%files server %files server
%defattr(-,root,root) %defattr(-,root,root)
/usr/share/eulercert/lib/server /usr/share/oech/lib/server
/usr/share/eulercert/lib/server/uwsgi.ini /usr/share/oech/lib/server/uwsgi.ini
/usr/share/eulercert/lib/server/uwsgi.conf /usr/share/oech/lib/server/uwsgi.conf
/usr/lib/systemd/system/eulercert-server.service /usr/lib/systemd/system/oech-server.service
%postun %postun
rm -rf /var/lock/eulercert.lock rm -rf /var/lock/oech.lock
%changelog %changelog
* Fri Jul 26 2019 Lu Tianxiong <lutianxiong@huawei.com> - 1.0.0-h1 * Fri Jul 26 2019 Lu Tianxiong <lutianxiong@huawei.com> - 1.0.0-h1
......
...@@ -26,15 +26,15 @@ ...@@ -26,15 +26,15 @@
all: ; all: ;
install: install:
rm -rf $(DESTDIR)/usr/bin/eulercert rm -rf $(DESTDIR)/usr/bin/oech
mkdir -p $(DESTDIR)/usr/bin mkdir -p $(DESTDIR)/usr/bin
cp eulercert $(DESTDIR)/usr/bin cp oech $(DESTDIR)/usr/bin
chmod u+x $(DESTDIR)/usr/bin/eulercert chmod u+x $(DESTDIR)/usr/bin/oech
mkdir -p $(DESTDIR)/usr/share/eulercert/lib mkdir -p $(DESTDIR)/usr/share/oech/lib
cp kernelrelease.json $(DESTDIR)/usr/share/eulercert/ cp kernelrelease.json $(DESTDIR)/usr/share/oech/
mkdir -p $(DESTDIR)/usr/lib/systemd/system/ mkdir -p $(DESTDIR)/usr/lib/systemd/system/
cp *.service $(DESTDIR)/usr/lib/systemd/system/ cp *.service $(DESTDIR)/usr/lib/systemd/system/
clean: clean:
rm -rf $(DESTDIR)/usr/bin/eulercert rm -rf $(DESTDIR)/usr/bin/oech
...@@ -17,11 +17,11 @@ import sys ...@@ -17,11 +17,11 @@ import sys
import fcntl import fcntl
import argparse import argparse
sys.path.append("/usr/share/eulercert/lib/") sys.path.append("/usr/share/oech/lib/")
os.putenv("PYTHONPATH", "/usr/share/eulercert/lib/") os.putenv("PYTHONPATH", "/usr/share/oech/lib/")
from hwcert.certification import EulerCertification from hwcompatible.compatibility import EulerCertification
import hwcert.version import hwcompatible.version
class CertLock: class CertLock:
...@@ -48,7 +48,7 @@ if __name__ == '__main__': ...@@ -48,7 +48,7 @@ if __name__ == '__main__':
sys.stderr.write("You need to be root to run this program.\n") sys.stderr.write("You need to be root to run this program.\n")
sys.exit(1) sys.exit(1)
parser = argparse.ArgumentParser(description="Run openEuler Hardware Certification Test Suite") parser = argparse.ArgumentParser(description="Run openEuler Hardware Compatibility Test Suite")
parser.add_argument('--clean', action='store_true', parser.add_argument('--clean', action='store_true',
help='Clean saved testsuite.') help='Clean saved testsuite.')
parser.add_argument('--rebootup', action='store_true', parser.add_argument('--rebootup', action='store_true',
...@@ -57,9 +57,9 @@ if __name__ == '__main__': ...@@ -57,9 +57,9 @@ if __name__ == '__main__':
help='Show testsuite version.') help='Show testsuite version.')
args = parser.parse_args() args = parser.parse_args()
lock = CertLock("/var/lock/eulercert.lock") lock = CertLock("/var/lock/oech.lock")
if not lock.acquire(): if not lock.acquire():
sys.stderr.write("The eulercert may be running already, you should not run it repeated.\n") sys.stderr.write("The oech may be running already, you should not run it repeated.\n")
sys.exit(1) sys.exit(1)
cert = EulerCertification() cert = EulerCertification()
...@@ -72,7 +72,7 @@ if __name__ == '__main__': ...@@ -72,7 +72,7 @@ if __name__ == '__main__':
lock.release() lock.release()
sys.exit(1) sys.exit(1)
elif args.version: elif args.version:
print("version: %s" % hwcert.version.version) print("version: %s" % hwcompatible.version.version)
else: else:
if not cert.run(): if not cert.run():
lock.release() lock.release()
......
[Unit] [Unit]
Description=openEuler Hardware Certification Server Description=openEuler Hardware Compatibility Test Server
After=network.target After=network.target
[Service] [Service]
Type=notify Type=notify
ExecStartPre=/usr/share/eulercert/lib/server/eulercert-server-pre.sh ExecStartPre=/usr/share/oech/lib/server/oech-server-pre.sh
ExecStart=/usr/local/bin/uwsgi --ini /usr/share/eulercert/lib/server/uwsgi.ini ExecStart=/usr/local/bin/uwsgi --ini /usr/share/oech/lib/server/uwsgi.ini
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target
[Unit] [Unit]
Description=openEuler Hardware Certification Test Suite Description=openEuler Hardware Compatibility Test Suite
After=basic.target network.target After=basic.target network.target
DefaultDependencies=no DefaultDependencies=no
[Service] [Service]
Type=oneshot Type=oneshot
ExecStart=/usr/bin/eulercert --rebootup ExecStart=/usr/bin/oech --rebootup
RemainAfterExit=yes RemainAfterExit=yes
TimeoutSec=0 TimeoutSec=0
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
.PHONY: install clean .PHONY: install clean
HWCERT_CLASS_LIB := /usr/share/eulercert/lib HWCERT_CLASS_LIB := /usr/share/oech/lib
all: ; all: ;
......
...@@ -12,6 +12,6 @@ ...@@ -12,6 +12,6 @@
# Create: 2020-04-01 # Create: 2020-04-01
dir_nginx=/etc/nginx/default.d dir_nginx=/etc/nginx/default.d
dir_cert=/usr/share/eulercert/lib/server dir_cert=/usr/share/oech/lib/server
test -f ${dir_nginx}/uwsgi.conf || cp -af ${dir_cert}/uwsgi.conf ${dir_nginx} test -f ${dir_nginx}/uwsgi.conf || cp -af ${dir_cert}/uwsgi.conf ${dir_nginx}
...@@ -74,7 +74,7 @@ def get_results(): ...@@ -74,7 +74,7 @@ def get_results():
@app.route('/results/<host>/<id>/<job>') @app.route('/results/<host>/<id>/<job>')
def get_job(host, id, job): def get_job(host, id, job):
dir_job = os.path.join(dir_results, host, id, job) dir_job = os.path.join(dir_results, host, id, job)
json_info = os.path.join(dir_job, 'certification.json') json_info = os.path.join(dir_job, 'compatibility.json')
json_results = os.path.join(dir_job, 'factory.json') json_results = os.path.join(dir_job, 'factory.json')
try: try:
with open(json_info, 'r') as f: with open(json_info, 'r') as f:
...@@ -142,7 +142,7 @@ def get_log(host, id, job, name): ...@@ -142,7 +142,7 @@ def get_log(host, id, job, name):
def submit(host, id, job): def submit(host, id, job):
dir_job = os.path.join(dir_results, host, id, job) dir_job = os.path.join(dir_results, host, id, job)
tar_job = dir_job + '.tar.gz' tar_job = dir_job + '.tar.gz'
json_cert = os.path.join(dir_job, 'certification.json') json_cert = os.path.join(dir_job, 'compatibility.json')
try: try:
with open(json_cert, 'r') as f: with open(json_cert, 'r') as f:
cert = json.load(f) cert = json.load(f)
......
{% extends "bootstrap/base.html" %} {% extends "bootstrap/base.html" %}
{% include "flash.html" %} {% include "flash.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block head %} {% block head %}
{{ super() }} {{ super() }}
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="/">EulerCert</a> <a class="navbar-brand" href="/">OECH</a>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
<h3>openEuler Hardware Certification</h3> <h3>openEuler Hardware Compatibility Test</h3>
</div> </div>
<table class="table table-striped table-hover"> <table class="table table-striped table-hover">
<thead> <thead>
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
<h3>openEuler Hardware Certification</h3> <h3>openEuler Hardware Compatibility Test</h3>
</div> </div>
{% for device in devices %} {% for device in devices %}
<table class="table table-striped table-hover"> <table class="table table-striped table-hover">
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert - {{ error }}{% endblock %} {% block title %}OECH - {{ error }}{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
<h1>EulerCert Test Server</h1> <h1>Compatibility Test Server</h1>
</div> </div>
<p>Welcome to the openEuler Hardware Certification.</p> <p>Welcome to the openEuler Hardware Compatibility Test.</p>
{% endblock %} {% endblock %}
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
<h3>openEuler Hardware Certification</h3> <h3>openEuler Hardware Compatibility Test</h3>
<br> <br>
<a class='btn btn-primary' href="/results/{{ host }}/{{ id }}/{{ job }}/submit">Submit</a> <a class='btn btn-primary' href="/results/{{ host }}/{{ id }}/{{ job }}/submit">Submit</a>
<a class='btn' href="/results/{{ host }}/{{ id }}/{{ job }}/devices">Devices</a> <a class='btn' href="/results/{{ host }}/{{ id }}/{{ job }}/devices">Devices</a>
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
<h3>openEuler Hardware Certification</h3> <h3>openEuler Hardware Compatibility Test</h3>
</div> </div>
<h4>{{ testcase }}</h4> <h4>{{ testcase }}</h4>
{% for line in log %} {% for line in log %}
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
<h3>openEuler Hardware Certification</h3> <h3>openEuler Hardware Compatibility Test</h3>
</div> </div>
<table class="table table-striped table-hover"> <table class="table table-striped table-hover">
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
{% endif %} {% endif %}
{% do use_divider.append(1) %} {% do use_divider.append(1) %}
<li class="dropdown-header">Cert ID: {{ id }}</li> <li class="dropdown-header">Test ID: {{ id }}</li>
{% for job in job_list %} {% for job in job_list %}
<li><a href="/results/{{ host }}/{{ id }}/{{ job }}">{{ job }}</a></li> <li><a href="/results/{{ host }}/{{ id }}/{{ job }}">{{ job }}</a></li>
{% endfor %} {% endfor %}
......
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}EulerCert{% endblock %} {% block title %}OECH{% endblock %}
{% block page_content %} {% block page_content %}
<div class="page-header"> <div class="page-header">
......
...@@ -8,6 +8,6 @@ location ~ ^/ { ...@@ -8,6 +8,6 @@ location ~ ^/ {
uwsgi_pass 127.0.0.1:8080; uwsgi_pass 127.0.0.1:8080;
uwsgi_param UWSGI_PYTHON /usr/bin/python3; uwsgi_param UWSGI_PYTHON /usr/bin/python3;
uwsgi_param UWSGI_CHDIR /usr/share/eulercert/lib/server; uwsgi_param UWSGI_CHDIR /usr/share/oech/lib/server;
uwsgi_param UWSGI_SCRIPT run:app; uwsgi_param UWSGI_SCRIPT run:app;
} }
[uwsgi] [uwsgi]
socket = 127.0.0.1:8080 socket = 127.0.0.1:8080
chdir = /usr/share/eulercert/lib/server chdir = /usr/share/oech/lib/server
wsgi-file = server.py wsgi-file = server.py
callable = app callable = app
processes = 4 processes = 4
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
.PHONY: all clean install .PHONY: all clean install
HWCERT_TEST_LIB := $(DESTDIR)/usr/share/eulercert/lib/tests/ HWCERT_TEST_LIB := $(DESTDIR)/usr/share/oech/lib/tests/
SUBDIRS := $(shell ls | grep -v Makefile) SUBDIRS := $(shell ls | grep -v Makefile)
all: all:
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
# See the Mulan PSL v2 for more details. # See the Mulan PSL v2 for more details.
# Create: 2020-04-01 # Create: 2020-04-01
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
class AcpiTest(Test): class AcpiTest(Test):
......
...@@ -18,9 +18,9 @@ import time ...@@ -18,9 +18,9 @@ import time
import shutil import shutil
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.commandUI import CommandUI from hwcompatible.commandUI import CommandUI
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
class CDRomTest(Test): class CDRomTest(Test):
......
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
import os import os
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
clock_dir = os.path.dirname(os.path.realpath(__file__)) clock_dir = os.path.dirname(os.path.realpath(__file__))
......
...@@ -18,10 +18,10 @@ import time ...@@ -18,10 +18,10 @@ import time
import shutil import shutil
import string import string
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
from hwcert.commandUI import CommandUI from hwcompatible.commandUI import CommandUI
from hwcert.device import CertDevice, Device from hwcompatible.device import CertDevice, Device
class DiskTest(Test): class DiskTest(Test):
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
# See the Mulan PSL v2 for more details. # See the Mulan PSL v2 for more details.
# Create: 2020-04-01 # Create: 2020-04-01
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
class IpmiTest(Test): class IpmiTest(Test):
......
...@@ -16,10 +16,10 @@ import os ...@@ -16,10 +16,10 @@ import os
import sys import sys
import time import time
import re import re
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.commandUI import CommandUI from hwcompatible.commandUI import CommandUI
from hwcert.document import ConfigFile from hwcompatible.document import ConfigFile
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
class KdumpTest(Test): class KdumpTest(Test):
......
...@@ -17,8 +17,8 @@ import sys ...@@ -17,8 +17,8 @@ import sys
import time import time
import re import re
import string import string
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
class MemoryTest(Test): class MemoryTest(Test):
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
import os import os
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
from hwcert.env import CertEnv from hwcompatible.env import CertEnv
from hwcert.document import CertDocument from hwcompatible.document import CertDocument
from rdma import RDMATest from rdma import RDMATest
...@@ -69,7 +69,7 @@ if __name__ == '__main__': ...@@ -69,7 +69,7 @@ if __name__ == '__main__':
t = EthernetTest() t = EthernetTest()
t.server_ip = '199.1.1.2' t.server_ip = '199.1.1.2'
from hwcert.device import Device from hwcompatible.device import Device
properties = { properties = {
'DEVPATH': '/devices/pci0000:80/0000:80:01.0/0000:81:00.0/net/enp129s0f0', 'DEVPATH': '/devices/pci0000:80/0000:80:01.0/0000:81:00.0/net/enp129s0f0',
'INTERFACE': 'enp129s0f0' 'INTERFACE': 'enp129s0f0'
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
import os import os
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
from rdma import RDMATest from rdma import RDMATest
...@@ -53,7 +53,7 @@ if __name__ == '__main__': ...@@ -53,7 +53,7 @@ if __name__ == '__main__':
t.server_ip = '199.1.37.20' t.server_ip = '199.1.37.20'
t.speed = 10000 # Mb/s t.speed = 10000 # Mb/s
from hwcert.device import Device from hwcompatible.device import Device
properties = { properties = {
'DEVPATH': '/devices/pci0000:d7/0000:d7:02.0/0000:d8:00.0/net/ib0', 'DEVPATH': '/devices/pci0000:d7/0000:d7:02.0/0000:d8:00.0/net/ib0',
'INTERFACE': 'ib0' 'INTERFACE': 'ib0'
......
...@@ -25,10 +25,10 @@ except ImportError: ...@@ -25,10 +25,10 @@ except ImportError:
from urllib import urlencode from urllib import urlencode
from urllib2 import urlopen, Request, HTTPError from urllib2 import urlopen, Request, HTTPError
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
from hwcert.document import CertDocument from hwcompatible.document import CertDocument
from hwcert.env import CertEnv from hwcompatible.env import CertEnv
class NetworkTest(Test): class NetworkTest(Test):
...@@ -377,7 +377,7 @@ if __name__ == '__main__': ...@@ -377,7 +377,7 @@ if __name__ == '__main__':
t = NetworkTest() t = NetworkTest()
t.server_ip = '9.82.37.2' t.server_ip = '9.82.37.2'
from hwcert.device import Device from hwcompatible.device import Device
properties = { properties = {
'DEVPATH': '/devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:03.0/0000:1a:00.2/net/eth_main', 'DEVPATH': '/devices/pci0000:17/0000:17:00.0/0000:18:00.0/0000:19:03.0/0000:1a:00.2/net/eth_main',
'INTERFACE': 'eth_main' 'INTERFACE': 'eth_main'
......
...@@ -16,10 +16,10 @@ import os ...@@ -16,10 +16,10 @@ import os
import re import re
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
from hwcert.document import CertDocument from hwcompatible.document import CertDocument
from hwcert.env import CertEnv from hwcompatible.env import CertEnv
from network import NetworkTest from network import NetworkTest
...@@ -217,7 +217,7 @@ if __name__ == '__main__': ...@@ -217,7 +217,7 @@ if __name__ == '__main__':
t.server_ip = '199.1.37.20' t.server_ip = '199.1.37.20'
t.speed = 10000 # Mb/s t.speed = 10000 # Mb/s
from hwcert.device import Device from hwcompatible.device import Device
properties = { properties = {
'DEVPATH': '/devices/pci0000:d7/0000:d7:02.0/0000:d8:00.0/net/ib0', 'DEVPATH': '/devices/pci0000:d7/0000:d7:02.0/0000:d8:00.0/net/ib0',
'INTERFACE': 'ib0' 'INTERFACE': 'ib0'
......
...@@ -15,9 +15,9 @@ ...@@ -15,9 +15,9 @@
import os import os
import sys import sys
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command from hwcompatible.command import Command
from hwcert.device import CertDevice, Device from hwcompatible.device import CertDevice, Device
class NvmeTest(Test): class NvmeTest(Test):
......
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
# Create: 2020-04-01 # Create: 2020-04-01
import re import re
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
class PerfTest(Test): class PerfTest(Test):
...@@ -22,9 +22,9 @@ class PerfTest(Test): ...@@ -22,9 +22,9 @@ class PerfTest(Test):
def __init__(self): def __init__(self):
Test.__init__(self) Test.__init__(self)
self.requirements = ["perf"] self.requirements = ["perf"]
self.perfRecord = "perf record -a -e cycles -o hwcert-perf.data sleep 5" self.perfRecord = "perf record -a -e cycles -o hwcompatible-perf.data sleep 5"
self.perfEvlist = "perf evlist -i hwcert-perf.data" self.perfEvlist = "perf evlist -i hwcompatible-perf.data"
self.perfReport = "perf report -i hwcert-perf.data --stdio" self.perfReport = "perf report -i hwcompatible-perf.data --stdio"
def exec_perf(self): def exec_perf(self):
# record # record
......
...@@ -18,11 +18,11 @@ import re ...@@ -18,11 +18,11 @@ import re
import shutil import shutil
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
from hwcert.sysinfo import SysInfo from hwcompatible.sysinfo import SysInfo
from hwcert.env import CertEnv from hwcompatible.env import CertEnv
from hwcert.document import Document from hwcompatible.document import Document
class SystemTest(Test): class SystemTest(Test):
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
import argparse import argparse
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
from hwcert.device import CertDevice, Device from hwcompatible.device import CertDevice, Device
class TapeTest(Test): class TapeTest(Test):
......
...@@ -16,10 +16,10 @@ import os ...@@ -16,10 +16,10 @@ import os
import sys import sys
import time import time
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.commandUI import CommandUI from hwcompatible.commandUI import CommandUI
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
from hwcert.device import CertDevice, Device from hwcompatible.device import CertDevice, Device
class UsbTest(Test): class UsbTest(Test):
......
...@@ -17,9 +17,9 @@ import sys ...@@ -17,9 +17,9 @@ import sys
import time import time
import re import re
from hwcert.test import Test from hwcompatible.test import Test
from hwcert.commandUI import CommandUI from hwcompatible.commandUI import CommandUI
from hwcert.command import Command, CertCommandError from hwcompatible.command import Command, CertCommandError
class WatchDogTest(Test): class WatchDogTest(Test):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册