mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-15 10:40:28 +08:00
v2 testing
This commit is contained in:
parent
10f8c2b335
commit
8abe4b1ac9
14
Makefile
14
Makefile
@ -7,6 +7,8 @@ TESTENV_LOOP ?= /dev/loop7
|
|||||||
|
|
||||||
USTREAMER_MIN_VERSION ?= $(shell grep -o 'ustreamer>=[^"]\+' PKGBUILD | sed 's/ustreamer>=//g')
|
USTREAMER_MIN_VERSION ?= $(shell grep -o 'ustreamer>=[^"]\+' PKGBUILD | sed 's/ustreamer>=//g')
|
||||||
|
|
||||||
|
DEFAULT_PLATFORM ?= v1-vga
|
||||||
|
|
||||||
|
|
||||||
# =====
|
# =====
|
||||||
define optbool
|
define optbool
|
||||||
@ -54,8 +56,8 @@ tox: testenv
|
|||||||
-it $(TESTENV_IMAGE) bash -c " \
|
-it $(TESTENV_IMAGE) bash -c " \
|
||||||
cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/v1-vga.yaml /etc/kvmd/main.yaml \
|
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),v1-vga).yaml /etc/kvmd/main.yaml \
|
||||||
&& cp /src/testenv/v1-vga.override.yaml /etc/kvmd/override.yaml \
|
&& cp /src/testenv/$(if $(P),$(P),v1-vga).override.yaml /etc/kvmd/override.yaml \
|
||||||
&& cd /src \
|
&& cd /src \
|
||||||
&& tox -q -c testenv/tox.ini $(if $(E),-e $(E),-p auto) \
|
&& tox -q -c testenv/tox.ini $(if $(E),-e $(E),-p auto) \
|
||||||
"
|
"
|
||||||
@ -78,8 +80,8 @@ run: testenv
|
|||||||
&& cp -r /usr/share/kvmd/configs.default/nginx/* /etc/kvmd/nginx \
|
&& cp -r /usr/share/kvmd/configs.default/nginx/* /etc/kvmd/nginx \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
&& cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/v1-vga.yaml /etc/kvmd/main.yaml \
|
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||||
&& cp /testenv/v1-vga.override.yaml /etc/kvmd/override.yaml \
|
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||||
&& nginx -c /etc/kvmd/nginx/nginx.conf -g 'user http; error_log stderr;' \
|
&& nginx -c /etc/kvmd/nginx/nginx.conf -g 'user http; error_log stderr;' \
|
||||||
&& ln -s $(TESTENV_VIDEO) /dev/kvmd-video \
|
&& ln -s $(TESTENV_VIDEO) /dev/kvmd-video \
|
||||||
&& (losetup -d /dev/kvmd-msd || true) \
|
&& (losetup -d /dev/kvmd-msd || true) \
|
||||||
@ -100,8 +102,8 @@ run-ipmi: testenv
|
|||||||
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
-it $(TESTENV_IMAGE) /bin/bash -c " \
|
||||||
cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
cp /usr/share/kvmd/configs.default/kvmd/*.yaml /etc/kvmd \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
&& cp /usr/share/kvmd/configs.default/kvmd/*passwd /etc/kvmd \
|
||||||
&& cp /usr/share/kvmd/configs.default/kvmd/main/v1-vga.yaml /etc/kvmd/main.yaml \
|
&& cp /usr/share/kvmd/configs.default/kvmd/main/$(if $(P),$(P),$(DEFAULT_PLATFORM)).yaml /etc/kvmd/main.yaml \
|
||||||
&& cp /testenv/v1-vga.override.yaml /etc/kvmd/override.yaml \
|
&& cp /testenv/$(if $(P),$(P),$(DEFAULT_PLATFORM)).override.yaml /etc/kvmd/override.yaml \
|
||||||
&& $(if $(CMD),$(CMD),python -m kvmd.apps.ipmi) \
|
&& $(if $(CMD),$(CMD),python -m kvmd.apps.ipmi) \
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|||||||
@ -137,6 +137,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes
|
|||||||
remount_cmd: List[str],
|
remount_cmd: List[str],
|
||||||
unlock_cmd: List[str],
|
unlock_cmd: List[str],
|
||||||
|
|
||||||
|
sysfs_prefix: str,
|
||||||
gadget: str, # XXX: Not from options, see /kvmd/apps/kvmd/__init__.py for details
|
gadget: str, # XXX: Not from options, see /kvmd/apps/kvmd/__init__.py for details
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
||||||
@ -147,7 +148,7 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes
|
|||||||
self.__remount_cmd = remount_cmd
|
self.__remount_cmd = remount_cmd
|
||||||
self.__unlock_cmd = unlock_cmd
|
self.__unlock_cmd = unlock_cmd
|
||||||
|
|
||||||
self.__drive = Drive(gadget, instance=0, lun=0)
|
self.__drive = Drive(sysfs_prefix, gadget, instance=0, lun=0)
|
||||||
|
|
||||||
self.__new_file: Optional[aiofiles.base.AiofilesContextManager] = None
|
self.__new_file: Optional[aiofiles.base.AiofilesContextManager] = None
|
||||||
self.__new_file_written = 0
|
self.__new_file_written = 0
|
||||||
@ -164,9 +165,10 @@ class Plugin(BaseMsd): # pylint: disable=too-many-instance-attributes
|
|||||||
def get_plugin_options(cls) -> Dict:
|
def get_plugin_options(cls) -> Dict:
|
||||||
sudo = ["/usr/bin/sudo", "--non-interactive"]
|
sudo = ["/usr/bin/sudo", "--non-interactive"]
|
||||||
return {
|
return {
|
||||||
"storage": Option("/var/lib/kvmd/msd", type=valid_abs_dir, unpack_as="storage_path"),
|
"storage": Option("/var/lib/kvmd/msd", type=valid_abs_dir, unpack_as="storage_path"),
|
||||||
"remount_cmd": Option([*sudo, "/usr/bin/kvmd-helper-otgmsd-remount", "{mode}"], type=valid_command),
|
"remount_cmd": Option([*sudo, "/usr/bin/kvmd-helper-otgmsd-remount", "{mode}"], type=valid_command),
|
||||||
"unlock_cmd": Option([*sudo, "/usr/bin/kvmd-helper-otgmsd-unlock", "unlock"], type=valid_command),
|
"unlock_cmd": Option([*sudo, "/usr/bin/kvmd-helper-otgmsd-unlock", "unlock"], type=valid_command),
|
||||||
|
"sysfs_prefix": Option("", type=(lambda arg: str(arg).strip())),
|
||||||
}
|
}
|
||||||
|
|
||||||
async def get_state(self) -> Dict:
|
async def get_state(self) -> Dict:
|
||||||
|
|||||||
@ -34,9 +34,9 @@ class MsdDriveLockedError(MsdOperationError):
|
|||||||
|
|
||||||
# =====
|
# =====
|
||||||
class Drive:
|
class Drive:
|
||||||
def __init__(self, gadget: str, instance: int, lun: int) -> None:
|
def __init__(self, prefix: str, gadget: str, instance: int, lun: int) -> None:
|
||||||
self.__path = os.path.join(
|
self.__path = os.path.join(
|
||||||
"/sys/kernel/config/usb_gadget",
|
f"{prefix}/sys/kernel/config/usb_gadget",
|
||||||
gadget,
|
gadget,
|
||||||
f"functions/mass_storage.usb{instance}/lun.{lun}",
|
f"functions/mass_storage.usb{instance}/lun.{lun}",
|
||||||
)
|
)
|
||||||
|
|||||||
@ -41,6 +41,13 @@ RUN git clone https://github.com/pikvm/ustreamer \
|
|||||||
COPY testenv/requirements.txt requirements.txt
|
COPY testenv/requirements.txt requirements.txt
|
||||||
RUN pip install -r requirements.txt
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
RUN mkdir -p /etc/kvmd/nginx
|
RUN mkdir -p \
|
||||||
|
/etc/kvmd/nginx \
|
||||||
|
/var/lib/kvmd/msd/{images,meta} \
|
||||||
|
/fake_sysfs/sys/kernel/config/usb_gadget/kvmd/functions/mass_storage.usb0/lun.0 \
|
||||||
|
&& cd /fake_sysfs/sys/kernel/config/usb_gadget/kvmd/functions/mass_storage.usb0/lun.0 \
|
||||||
|
&& touch file \
|
||||||
|
&& echo 1 > cdrom \
|
||||||
|
&& echo 1 > ro
|
||||||
|
|
||||||
CMD /bin/bash
|
CMD /bin/bash
|
||||||
|
|||||||
32
testenv/v2-hdmi.override.yaml
Normal file
32
testenv/v2-hdmi.override.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
kvmd:
|
||||||
|
server:
|
||||||
|
unix_mode: 0666
|
||||||
|
|
||||||
|
hid:
|
||||||
|
keyboard:
|
||||||
|
device: /dev/null
|
||||||
|
mouse:
|
||||||
|
device: /dev/null
|
||||||
|
noop: true
|
||||||
|
|
||||||
|
msd:
|
||||||
|
remount_cmd: /bin/true
|
||||||
|
unlock_cmd: /bin/true
|
||||||
|
sysfs_prefix: /fake_sysfs
|
||||||
|
|
||||||
|
streamer:
|
||||||
|
desired_fps: 30
|
||||||
|
max_fps: 40
|
||||||
|
cmd:
|
||||||
|
- "/usr/bin/ustreamer"
|
||||||
|
- "--device=/dev/kvmd-video"
|
||||||
|
- "--quality={quality}"
|
||||||
|
- "--desired-fps={desired_fps}"
|
||||||
|
- "--resolution=800x600"
|
||||||
|
- "--last-as-blank=0"
|
||||||
|
- "--unix={unix}"
|
||||||
|
- "--unix-rm"
|
||||||
|
- "--unix-mode=0666"
|
||||||
|
- "--exit-on-parent-death"
|
||||||
|
- "--process-name-prefix={process_name_prefix}"
|
||||||
|
- "--no-log-colors"
|
||||||
Loading…
x
Reference in New Issue
Block a user