1
0
mirror of https://github.com/ARM-software/workload-automation.git synced 2025-09-01 10:52:33 +01:00

workloads: Add support for Honor of Kings game

Introduce a new workload for automating match replays in Honor of Kings.
This workload leverages ApkReventWorkload to launch the game and play
back a specified replay file.

Allow customization through parameters:
- `activity`: Specifies the activity string of the game.
- `replay_file`: Designates the replay file to be uploaded.

The game can be replayed via `wa replay` command as well, but this
plugin makes data collection (`fps`, `trace-cmd` like augmentations)
a lot easier.

Signed-off-by: Metin Kaya <metin.kaya@arm.com>
This commit is contained in:
Metin Kaya
2025-05-07 16:32:20 +01:00
committed by Marc Bonnici
parent c898bdc41b
commit 2183082843

View File

@@ -0,0 +1,61 @@
# Copyright 2025 ARM Limited
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import os
from wa import ApkReventWorkload, Parameter
class HoK(ApkReventWorkload):
name = 'honorofkings'
uninstall = False
clear_data_on_reset = False # Don't clear assets on exit
requires_network = True # The game requires network connection
description = (
'Launch a match replay in Honor of Kings.\n\n'
'The game must already have a user logged in and the plugins downloaded.'
)
package_names = [
'com.levelinfinite.sgameGlobal',
'com.tencent.tmgp.sgame',
]
parameters = [
Parameter(
'activity',
kind=str,
default='.SGameGlobalActivity',
description='Activity name of Honor of Kings game.',
),
Parameter(
'replay_file',
kind=str,
default='replay.abc',
description='Honor of Kings Replay file name.',
),
]
def setup(self, context):
upload_dir = self.target.path.join(
self.target.external_storage_app_dir,
self.apk.apk_info.package,
'files',
'Replay'
)
replay_file = os.path.join(self.dependencies_directory, self.replay_file)
self.logger.debug('Uploading "%s" to "%s"...', replay_file, upload_dir)
self.target.push(replay_file, upload_dir)
super().setup(context)