diff --git a/appStore/api/router.py b/appStore/api/router.py index ab1869546538befe5a77b58d43e7bc3610739856..2e90d4bf6e46451446a5af23037f9dd4f212d430 100644 --- a/appStore/api/router.py +++ b/appStore/api/router.py @@ -19,6 +19,7 @@ from appStore.project.views import ProjectViewSet from appStore.stream.views import StreamViewSet from appStore.testCase.views import TestCaseViewSet from appStore.unixbench.views import UnixbenchViewSet +from appStore.userConfig.views import UserConfigViewSet from appStore.users.views import UserProfileViewSet router = routers.DefaultRouter() @@ -36,7 +37,8 @@ router.register(r'project', ProjectViewSet, basename='project') router.register(r'stream', StreamViewSet, basename='stream') router.register(r'unixbench', UnixbenchViewSet, basename='unixbench') router.register(r'users', UserProfileViewSet, basename='users') -router.register(r'test_case', TestCaseViewSet, basename='testcase') +router.register(r'test_case', TestCaseViewSet, basename='test_case') +router.register(r'user_config', UserConfigViewSet, basename='user_config') urlpatterns = [ url(r'', include(router.urls)), diff --git a/appStore/testCase/views.py b/appStore/testCase/views.py index 01621cc3bb883b3cb4aa7de8a3f43edda097ff32..069a96f1aae640c3c23904cf79c4dd9d4272998a 100644 --- a/appStore/testCase/views.py +++ b/appStore/testCase/views.py @@ -39,21 +39,21 @@ class TestCaseViewSet(CusModelViewSet): serializer = self.get_serializer(queryset, many=True) return json_response(serializer.data, status.HTTP_200_OK, '测试完成') - def do_test_case1(self, request, *args, **kwargs): + def do_test_case(self, request, *args, **kwargs): # 创建对应数据库 data_test_case = {} data_test_case['user_name'] = request.user.chinese_name - data_test_case['ip'] = request.POST.get('test_ip') - test_password = request.POST.get('test_password') - data_test_case['project_name'] = request.POST.get('project_name') - data_test_case['stream'] = request.POST.get('stream') - data_test_case['lmbench'] = request.POST.get('lmbench') - data_test_case['unixbench'] = request.POST.get('unixbench') - data_test_case['fio'] = request.POST.get('fio') - data_test_case['iozone'] = request.POST.get('iozone') - data_test_case['jvm2008'] = request.POST.get('jvm2008') - data_test_case['cpu2006'] = request.POST.get('cpu2006') - data_test_case['cpu2017'] = request.POST.get('cpu2017') + data_test_case['ip'] = request.data.get('test_ip') + test_password = request.data.get('test_password') + data_test_case['project_name'] = request.data.get('project_name') + data_test_case['stream'] = request.data.get('stream') + data_test_case['lmbench'] = request.data.get('lmbench') + data_test_case['unixbench'] = request.data.get('unixbench') + data_test_case['fio'] = request.data.get('fio') + data_test_case['iozone'] = request.data.get('iozone') + data_test_case['jvm2008'] = request.data.get('jvm2008') + data_test_case['cpu2006'] = request.data.get('cpu2006') + data_test_case['cpu2017'] = request.data.get('cpu2017') data_test_case['test_result'] = '运行中' data_test_case['result_log_name'] = RESULT_LOG_FILE + str(request.user) + '_' + str(time.time()) @@ -74,7 +74,6 @@ class TestCaseViewSet(CusModelViewSet): test_case_names.append('cpu2006') if int(data_test_case['cpu2017']): test_case_names.append('cpu2017') - # todo 密码怎么解决,从数据库中获取在解密? if not os.path.exists(RESULT_LOG_FILE): os.makedirs(RESULT_LOG_FILE) @@ -94,74 +93,53 @@ class TestCaseViewSet(CusModelViewSet): configfile.write('project_name={}\n'.format(data_test_case['project_name'])) configfile.write('upload=true\n') configfile.write('username={}\n'.format(str(request.user))) - configfile.write('password={}\n'.format(request.POST.get('password'))) + configfile.write('password={}\n'.format(request.data.get('user_password'))) # 将配置数据写入YAML文件 # 第一代的版本就先只支持迭代次数 if int(data_test_case['stream']): - # 这个是获取用户的全部配置直接写入的方式 - # with open(user_config + '/yaml-base/stream-base.yaml', 'w') as f: - # yaml.dump(stream_base_yaml, f) - # 读取YAML文件中的数据 - with open('./yaml-base/stream-base.yaml', 'r') as f: - config = yaml.full_load(f) - # 根据需要修改配置数据 - config['maxiterations'] = int(data_test_case['stream']) - # 将修改后的数据写回YAML文件 - with open(user_config_path + '/yaml-base/stream-base.yaml', 'w') as f: - yaml.dump(config, f, default_flow_style=False) + stream_yaml = request.data.get('yaml')['stream'].replace('maxiterations: 1', 'maxiterations: %d' % (int(data_test_case['stream']))) + with open(user_config_path + '/yaml-base/stream-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(stream_yaml) if int(data_test_case['lmbench']): - with open('./yaml-base/lmbench-base.yaml', 'r') as f: - config = yaml.full_load(f) - config['maxiterations'] = int(data_test_case['lmbench']) - with open(user_config_path + '/yaml-base/lmbench-base.yaml', 'w') as f: - yaml.dump(config, f, default_flow_style=False) + lmbench_yaml = request.data.get('yaml')['lmbench'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['lmbench']))) + with open(user_config_path + '/yaml-base/lmbench-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(lmbench_yaml) if int(data_test_case['unixbench']): - with open('./yaml-base/unixbench-base.yaml', 'r') as f: - config = yaml.full_load(f) - config['maxiterations'] = int(data_test_case['unixbench']) - with open(user_config_path + '/yaml-base/unixbench-base.yaml', 'w') as f: - yaml.dump(config, f) + unixbench_yaml = request.data.get('yaml')['unixbench'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['unixbench']))) + with open(user_config_path + '/yaml-base/unixbench-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(unixbench_yaml) if int(data_test_case['fio']): - with open('./yaml-base/fio-base.yaml', 'r') as f: - config = yaml.full_load(f) - config['maxiterations'] = int(data_test_case['fio']) - with open(user_config_path + '/yaml-base/fio-base.yaml', 'w') as f: - yaml.dump(config, f) + fio_yaml = request.data.get('yaml')['fio'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['fio']))) + with open(user_config_path + '/yaml-base/fio-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(fio_yaml) if int(data_test_case['iozone']): - with open('./yaml-base/iozone-base.yaml', 'r') as f: - config = yaml.full_load(f) - config['maxiterations'] = int(data_test_case['iozone']) - with open(user_config_path + '/yaml-base/iozone-base.yaml', 'w') as f: - yaml.dump(config, f) + iozone_yaml = request.data.get('yaml')['iozone'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['iozone']))) + with open(user_config_path + '/yaml-base/iozone-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(iozone_yaml) if int(data_test_case['jvm2008']): - # 读取YAML文件中的数据 - with open('./yaml-base/jvm2008-base.yaml', 'r') as f: - config = yaml.full_load(f) - # 根据需要修改配置数据 - config['maxiterations'] = int(data_test_case['jvm2008']) - # 将修改后的数据写回YAML文件 - with open(user_config_path + '/yaml-base/jvm2008-base.yaml', 'w') as f: - yaml.dump(config, f) + jvm2008_yaml = request.data.get('yaml')['jvm2008'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['jvm2008']))) + with open(user_config_path + '/yaml-base/jvm2008-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(jvm2008_yaml) if int(data_test_case['cpu2006']): - # todo cpu2006-loongarch64-base.yaml这个怎么处理 - # 读取YAML文件中的数据 - with open('./yaml-base/cpu2006-base.yaml', 'r') as f: - config = yaml.full_load(f) - # 根据需要修改配置数据 - config['maxiterations'] = int(data_test_case['cpu2006']) - # 将修改后的数据写回YAML文件 - with open(user_config_path + '/yaml-base/cpu2006-base.yaml', 'w') as f: - yaml.dump(config, f) + cpu2006_yaml = request.data.get('yaml')['cpu2006'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['cpu2006']))) + with open(user_config_path + '/yaml-base/cpu2006-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(cpu2006_yaml) + cpu2006_loongarch64_yaml = request.data.get('yaml')['cpu2006_loongarch64'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['cpu2006_loongarch64']))) + with open(user_config_path + '/yaml-base/cpu2006-loongarch64-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(cpu2006_loongarch64_yaml) if int(data_test_case['cpu2017']): - # 读取YAML文件中的数据 - with open('./yaml-base/cpu2017-base.yaml', 'r') as f: - config = yaml.full_load(f) - # 根据需要修改配置数据 - config['maxiterations'] = int(data_test_case['cpu2017']) - # 将修改后的数据写回YAML文件 - with open(user_config_path + '/yaml-base/cpu2017-base.yaml', 'w') as f: - yaml.dump(config, f) + cpu2017_yaml = request.data.get('yaml')['cpu2017'].replace('maxiterations: 1', 'maxiterations: %d' % ( + int(data_test_case['cpu2017']))) + with open(user_config_path + '/yaml-base/cpu2017-base.yaml', 'w', encoding='UTF-8') as fp: + fp.write(cpu2017_yaml) # return json_response({}, status.HTTP_400_BAD_REQUEST,{}) # 创建请求测试数据 serializer_test_case = TestCaseSerializer(data=data_test_case) diff --git a/appStore/userConfig/models.py b/appStore/userConfig/models.py index 890c04e38e735e75523fc8b0e87f238ab2f872b3..d241fa2b903e304656ac0267874a2a989e01c4a2 100644 --- a/appStore/userConfig/models.py +++ b/appStore/userConfig/models.py @@ -11,24 +11,28 @@ from django.db import models class UserConfig(models.Model): """用户配置表""" user_name = models.CharField(max_length=50, verbose_name='用户名称') + user_password = models.CharField(max_length=50, verbose_name='用户密码') project_name = models.CharField(max_length=50, verbose_name='测试项目名称') - test_machine_name = models.CharField(max_length=100, verbose_name='测试机器名称') + test_ip = models.CharField(max_length=50, verbose_name='测试机器IP') + test_password = models.CharField(max_length=50, verbose_name='测试机器密码') stream_number = models.CharField(max_length=100, verbose_name='stream测试迭代次数') lmbench_number = models.CharField(max_length=100, verbose_name='lmbench测试迭代次数') unixbench_number = models.CharField(max_length=100, verbose_name='unixbench测试迭代次数') - fio = models.CharField(max_length=100, verbose_name='fio测试迭代次数') + fio_number = models.CharField(max_length=100, verbose_name='fio测试迭代次数') iozone_number = models.CharField(max_length=100, verbose_name='iozone测试迭代次数') jvm2008_number = models.CharField(max_length=100, verbose_name='jvm2008测试迭代次数') cpu2006_number = models.CharField(max_length=100, verbose_name='cpu2006测试迭代次数') cpu2017_number = models.CharField(max_length=100, verbose_name='cpu2017测试迭代次数') - stream_config = models.TextField(verbose_name='stream测试配置文件', null=True, blank=True) - lmbench_config = models.TextField(verbose_name='lmbench测试配置文件', null=True, blank=True) - unixbbench_config = models.TextField(verbose_name='unixbbench测试配置文件', null=True, blank=True) - fio_config = models.TextField(verbose_name='fio测试配置文件', null=True, blank=True) - iozone_config = models.TextField(verbose_name='iozone测试配置文件', null=True, blank=True) - jvm2008_config = models.TextField(verbose_name='jvm2008测试配置文件', null=True, blank=True) - cpu2006_config = models.TextField(verbose_name='cpu2006测试配置文件', null=True, blank=True) - cpu2017_config = models.TextField(verbose_name='cpu2017测试配置文件', null=True, blank=True) + stream_config = models.TextField(verbose_name='stream测试配置文件') + lmbench_config = models.TextField(verbose_name='lmbench测试配置文件') + unixbbench_config = models.TextField(verbose_name='unixbbench测试配置文件') + fio_config = models.TextField(verbose_name='fio测试配置文件') + iozone_config = models.TextField(verbose_name='iozone测试配置文件') + jvm2008_config = models.TextField(verbose_name='jvm2008测试配置文件') + cpu2006_config = models.TextField(verbose_name='cpu2006测试配置文件') + cpu2006_loongarch64_config = models.TextField(verbose_name='cpu2006_loongarch64测试配置文件') + cpu2017_config = models.TextField(verbose_name='cpu2017测试配置文件') + message = models.CharField(max_length=200,verbose_name='描述信息', null=True, blank=True) class Meta: db_table = 'userConfig' \ No newline at end of file diff --git a/appStore/userConfig/views.py b/appStore/userConfig/views.py index c8634bb00759f3cbb12514a592d91c02d3fcdac8..46a4ab741d36ab92d3f615dcabeeab8e0f02deaa 100644 --- a/appStore/userConfig/views.py +++ b/appStore/userConfig/views.py @@ -7,6 +7,7 @@ """ from appStore.userConfig.models import UserConfig from appStore.userConfig.serializers import UserConfigSerializer +from appStore.utils.common import json_response from appStore.utils.customer_view import CusModelViewSet # Create your views here. @@ -14,6 +15,58 @@ class UserConfigViewSet(CusModelViewSet): """ 测试机器数据管理 """ - queryset = UserConfig.objects.all().order_by('-id') - serializer_class = UserConfigSerializer \ No newline at end of file + serializer_class = UserConfigSerializer + + def list(self, request, *args, **kwargs): + queryset = UserConfig.objects.filter(user_name=request.user.username).all().order_by('-id') + if not queryset: + return json_response({}, status.HTTP_200_OK, '列表') + serializer = self.get_serializer(queryset, many=True) + return json_response(serializer.data, status.HTTP_200_OK, '测试完成') + + def create(self, request, *args, **kwargs): + user_config_data = {} + user_config_data['user_name'] = request.user.username + user_config_data['user_password'] = request.data.get('user_password') + user_config_data['project_name'] = request.data.get('project_name') + user_config_data['test_ip'] = request.data.get('test_ip') + user_config_data['test_password'] = request.data.get('test_password') + user_config_data['stream_number'] = request.data.get('stream') + user_config_data['lmbench_number'] = request.data.get('lmbench') + user_config_data['unixbench_number'] = request.data.get('unixbench') + user_config_data['fio_number'] = request.data.get('fio') + user_config_data['iozone_number'] = request.data.get('iozone') + user_config_data['jvm2008_number'] = request.data.get('jvm2008') + user_config_data['cpu2006_number'] = request.data.get('cpu2006') + user_config_data['cpu2017_number'] = request.data.get('cpu2017') + user_config_data['stream_config'] = request.data.get('yaml')['stream'] + user_config_data['lmbench_config'] = request.data.get('yaml')['lmbench'] + user_config_data['unixbbench_config'] = request.data.get('yaml')['unixbench'] + user_config_data['fio_config'] = request.data.get('yaml')['fio'] + user_config_data['iozone_config'] = request.data.get('yaml')['iozone'] + user_config_data['jvm2008_config'] = request.data.get('yaml')['jvm2008'] + user_config_data['cpu2006_config'] = request.data.get('yaml')['cpu2006'] + user_config_data['cpu2006_loongarch64_config'] = request.data.get('yaml')['cpu2006_loongarch64'] + user_config_data['cpu2017_config'] = request.data.get('yaml')['cpu2017'] + config_serializer = UserConfigSerializer(data=user_config_data) + if config_serializer.is_valid(): + self.perform_create(config_serializer) + return json_response(config_serializer.data, status.HTTP_200_OK, '创建成功!') + return json_response({}, status.HTTP_400_BAD_REQUEST,config_serializer.errors) + + def delete(self, request): + id = request.data.get('id', None) + if not id or not UserConfig.objects.filter(id=id): + return json_response({}, status.HTTP_205_RESET_CONTENT, '请传递正确的测试id') + user_name = UserConfig.objects.filter(id=id).first().user_name + if request.user.is_superuser or request.user.username == user_name: + test_case_data = UserConfig.objects.filter(id=id).first() + if not test_case_data: + return json_response({}, status.HTTP_205_RESET_CONTENT, '没有该数据') + UserConfig.objects.filter(id=id).delete() + return json_response({}, status.HTTP_200_OK, '删除成功') + else: + return json_response({}, status.HTTP_205_RESET_CONTENT, '此用户不允许删除该数据') + + diff --git a/templates/front-project/src/views/StreamTable.vue b/templates/front-project/src/views/StreamTable.vue index 1be77d79beb07b6ba3df46c09fce64bda5dbba4e..a7f98849f4bf76d6aac153ebb96832127f35ddbc 100644 --- a/templates/front-project/src/views/StreamTable.vue +++ b/templates/front-project/src/views/StreamTable.vue @@ -6,38 +6,30 @@ * Date: Fri Mar 8 09:35:30 2024 +0800 -->