diff --git a/test/integration/component/test_accounts.py b/test/integration/component/test_accounts.py index 641f6fd139c..d0b4434bb4e 100644 --- a/test/integration/component/test_accounts.py +++ b/test/integration/component/test_accounts.py @@ -19,9 +19,9 @@ #Import Local Modules from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin import remoteSSHClient import datetime diff --git a/test/integration/component/test_allocation_states.py b/test/integration/component/test_allocation_states.py index 8bf2dc45854..006f8795fbf 100644 --- a/test/integration/component/test_allocation_states.py +++ b/test/integration/component/test_allocation_states.py @@ -19,9 +19,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * import datetime diff --git a/test/integration/component/test_blocker_bugs.py b/test/integration/component/test_blocker_bugs.py index d40fc9f6a40..cc5da0ace4a 100644 --- a/test/integration/component/test_blocker_bugs.py +++ b/test/integration/component/test_blocker_bugs.py @@ -18,9 +18,9 @@ """ import marvin from nose.plugins.attrib import attr -from integration.lib.base import * -from integration.lib.utils import * -from integration.lib.common import * +from marvin.integration.lib.base import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.common import * #Import Local Modules from marvin.cloudstackTestCase import * diff --git a/test/integration/component/test_egress_rules.py b/test/integration/component/test_egress_rules.py index f888163a1cf..73a91f41bfe 100644 --- a/test/integration/component/test_egress_rules.py +++ b/test/integration/component/test_egress_rules.py @@ -23,9 +23,9 @@ from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin.remoteSSHClient import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * #Import System modules import time diff --git a/test/integration/component/test_eip_elb.py b/test/integration/component/test_eip_elb.py index c3d650b3d41..4c8dcbe2c07 100644 --- a/test/integration/component/test_eip_elb.py +++ b/test/integration/component/test_eip_elb.py @@ -22,9 +22,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_network_offering.py b/test/integration/component/test_network_offering.py index 35cc01129ce..c1a518b458a 100644 --- a/test/integration/component/test_network_offering.py +++ b/test/integration/component/test_network_offering.py @@ -22,9 +22,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_project_configs.py b/test/integration/component/test_project_configs.py index c82bf134871..d5ce9d6024d 100644 --- a/test/integration/component/test_project_configs.py +++ b/test/integration/component/test_project_configs.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_project_limits.py b/test/integration/component/test_project_limits.py index c1ef86aade8..8f7c1281b23 100644 --- a/test/integration/component/test_project_limits.py +++ b/test/integration/component/test_project_limits.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * import datetime diff --git a/test/integration/component/test_project_resources.py b/test/integration/component/test_project_resources.py index cf3b593dad4..27452be811f 100644 --- a/test/integration/component/test_project_resources.py +++ b/test/integration/component/test_project_resources.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_project_usage.py b/test/integration/component/test_project_usage.py index c171e3c7f8b..4561576543c 100644 --- a/test/integration/component/test_project_usage.py +++ b/test/integration/component/test_project_usage.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_projects.py b/test/integration/component/test_projects.py index 26d4a6f91c4..811d092d18e 100644 --- a/test/integration/component/test_projects.py +++ b/test/integration/component/test_projects.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_resource_limits.py b/test/integration/component/test_resource_limits.py index f182ed17bd0..cd007f1595e 100644 --- a/test/integration/component/test_resource_limits.py +++ b/test/integration/component/test_resource_limits.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * import datetime diff --git a/test/integration/component/test_routers.py b/test/integration/component/test_routers.py index dde8aa4b8b6..a65c5c34005 100644 --- a/test/integration/component/test_routers.py +++ b/test/integration/component/test_routers.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient #Import System modules diff --git a/test/integration/component/test_security_groups.py b/test/integration/component/test_security_groups.py index 5c737d7ea97..13a87b67c83 100644 --- a/test/integration/component/test_security_groups.py +++ b/test/integration/component/test_security_groups.py @@ -22,9 +22,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient #Import System modules diff --git a/test/integration/component/test_snapshots.py b/test/integration/component/test_snapshots.py index 34a1e03052a..27c960f1b16 100644 --- a/test/integration/component/test_snapshots.py +++ b/test/integration/component/test_snapshots.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient diff --git a/test/integration/component/test_templates.py b/test/integration/component/test_templates.py index 407f8ed3bb0..e6b2dd6c476 100644 --- a/test/integration/component/test_templates.py +++ b/test/integration/component/test_templates.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import urllib from random import random diff --git a/test/integration/component/test_usage.py b/test/integration/component/test_usage.py index e5684f8694b..34dbc3780d0 100644 --- a/test/integration/component/test_usage.py +++ b/test/integration/component/test_usage.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient import datetime diff --git a/test/integration/component/test_volumes.py b/test/integration/component/test_volumes.py index 3bad5f10254..5819001e1b9 100644 --- a/test/integration/component/test_volumes.py +++ b/test/integration/component/test_volumes.py @@ -21,9 +21,9 @@ import marvin from nose.plugins.attrib import attr from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from marvin.remoteSSHClient import remoteSSHClient #Import System modules import os diff --git a/test/integration/smoke/test_disk_offerings.py b/test/integration/smoke/test_disk_offerings.py index 147904e6b60..ce77b9aecf6 100644 --- a/test/integration/smoke/test_disk_offerings.py +++ b/test/integration/smoke/test_disk_offerings.py @@ -20,9 +20,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr class Services: diff --git a/test/integration/smoke/test_hosts.py b/test/integration/smoke/test_hosts.py index 260ca9fa8c9..cedf43c58f0 100644 --- a/test/integration/smoke/test_hosts.py +++ b/test/integration/smoke/test_hosts.py @@ -20,9 +20,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr #Import System modules diff --git a/test/integration/smoke/test_iso.py b/test/integration/smoke/test_iso.py index 6ed0a18dc8d..7ed2c1bb4e8 100644 --- a/test/integration/smoke/test_iso.py +++ b/test/integration/smoke/test_iso.py @@ -20,9 +20,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr import urllib from random import random diff --git a/test/integration/smoke/test_network.py b/test/integration/smoke/test_network.py index b0a793c5c6d..c1277f5933f 100644 --- a/test/integration/smoke/test_network.py +++ b/test/integration/smoke/test_network.py @@ -21,9 +21,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr #Import System modules import time diff --git a/test/integration/smoke/test_primary_storage.py b/test/integration/smoke/test_primary_storage.py index 5c804f7ed9c..7daf3ca1cbe 100644 --- a/test/integration/smoke/test_primary_storage.py +++ b/test/integration/smoke/test_primary_storage.py @@ -20,10 +20,10 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr -from integration.lib.common import * #Import System modules import time @@ -240,4 +240,4 @@ class TestPrimaryStorageServices(cloudstackTestCase): # Call cleanup for reusing primary storage cleanup_resources(self.apiclient, self.cleanup) self.cleanup = [] - return \ No newline at end of file + return diff --git a/test/integration/smoke/test_routers.py b/test/integration/smoke/test_routers.py index e5f4735a846..346ba6189da 100644 --- a/test/integration/smoke/test_routers.py +++ b/test/integration/smoke/test_routers.py @@ -21,9 +21,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr #Import System modules import time diff --git a/test/integration/smoke/test_secondary_storage.py b/test/integration/smoke/test_secondary_storage.py index d59e779df43..d345bcb56b8 100644 --- a/test/integration/smoke/test_secondary_storage.py +++ b/test/integration/smoke/test_secondary_storage.py @@ -20,9 +20,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr #Import System modules diff --git a/test/integration/smoke/test_service_offerings.py b/test/integration/smoke/test_service_offerings.py index e6979116d80..a4188b6cee2 100644 --- a/test/integration/smoke/test_service_offerings.py +++ b/test/integration/smoke/test_service_offerings.py @@ -20,9 +20,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr diff --git a/test/integration/smoke/test_ssvm.py b/test/integration/smoke/test_ssvm.py index 5c9d030380d..e86446330cd 100644 --- a/test/integration/smoke/test_ssvm.py +++ b/test/integration/smoke/test_ssvm.py @@ -21,9 +21,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr import telnetlib diff --git a/test/integration/smoke/test_templates.py b/test/integration/smoke/test_templates.py index 9fefa900eb9..62b923768d8 100644 --- a/test/integration/smoke/test_templates.py +++ b/test/integration/smoke/test_templates.py @@ -21,9 +21,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin.remoteSSHClient import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr import urllib from random import random diff --git a/test/integration/smoke/test_vm_life_cycle.py b/test/integration/smoke/test_vm_life_cycle.py index b47c1642925..15ffb26e6f8 100644 --- a/test/integration/smoke/test_vm_life_cycle.py +++ b/test/integration/smoke/test_vm_life_cycle.py @@ -21,9 +21,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin.remoteSSHClient import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr #Import System modules import time diff --git a/test/integration/smoke/test_volumes.py b/test/integration/smoke/test_volumes.py index ed5cbafe28d..1707187210e 100644 --- a/test/integration/smoke/test_volumes.py +++ b/test/integration/smoke/test_volumes.py @@ -21,9 +21,9 @@ import marvin from marvin.cloudstackTestCase import * from marvin.cloudstackAPI import * from marvin.remoteSSHClient import remoteSSHClient -from integration.lib.utils import * -from integration.lib.base import * -from integration.lib.common import * +from marvin.integration.lib.utils import * +from marvin.integration.lib.base import * +from marvin.integration.lib.common import * from nose.plugins.attrib import attr #Import System modules import os diff --git a/test/setup-test-data.sh b/test/setup-test-data.sh index 584a04f774d..f7bad10d9d7 100755 --- a/test/setup-test-data.sh +++ b/test/setup-test-data.sh @@ -20,6 +20,7 @@ usage() { printf "Usage: %s:\n [-t path to tests ] \n [-m mgmt-server ] \n + [-h hypervisor (xen|kvm) ] \n [-p hypervisor root password ] \n [-d db node url ]\n" $(basename $0) >&2 } @@ -34,7 +35,7 @@ MGMT_SVR="localhost" DB_SVR="localhost" HV_PASSWD="password" -while getopts 't:d:m:p:' OPTION +while getopts 't:d:m:p:h:' OPTION do case $OPTION in d) dflag=1 @@ -46,6 +47,9 @@ do m) mflag=1 MGMT_SVR="$OPTARG" ;; + h) hflag=1 + HV="$OPTARG" + ;; p) pflag=1 HV_PASSWD="$OPTARG" ;; @@ -56,7 +60,11 @@ do done #Damn Small Linux ISO type -ostypeid=$(mysql -ucloud -Dcloud -pcloud -h$DB_SVR -s -N -r -e"select uuid from guest_os where display_name='CentOS 5.5 (64-bit)'") +if [[ $HV == "kvm" ]]; then + ostypeid=$(mysql -ucloud -Dcloud -pcloud -h$DB_SVR -s -N -r -e"select uuid from guest_os where display_name='CentOS 5.5 (64-bit)'") +else: + ostypeid=$(mysql -ucloud -Dcloud -pcloud -h$DB_SVR -s -N -r -e"select uuid from guest_os where display_name='CentOS 5.3 (64-bit)'") +fi if [[ $ostypeid == "" ]]; then echo "Unable to contact DB server @ $DB_SVR" exit 2 diff --git a/tools/marvin/marvin/deployDataCenter.py b/tools/marvin/marvin/deployDataCenter.py index f9d837fa2c0..bdf08cc2d2d 100644 --- a/tools/marvin/marvin/deployDataCenter.py +++ b/tools/marvin/marvin/deployDataCenter.py @@ -350,7 +350,7 @@ class deployDataCenters(): return apiKey, securityKey def getCfg(self): - if self.config: + if self.config is not None: return self.config return None diff --git a/tools/marvin/marvin/integration/__init__.py b/tools/marvin/marvin/integration/__init__.py new file mode 100644 index 00000000000..57823fcc162 --- /dev/null +++ b/tools/marvin/marvin/integration/__init__.py @@ -0,0 +1,18 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + + diff --git a/test/integration/lib/__init__.py b/tools/marvin/marvin/integration/lib/__init__.py similarity index 100% rename from test/integration/lib/__init__.py rename to tools/marvin/marvin/integration/lib/__init__.py diff --git a/test/integration/lib/base.py b/tools/marvin/marvin/integration/lib/base.py similarity index 100% rename from test/integration/lib/base.py rename to tools/marvin/marvin/integration/lib/base.py diff --git a/test/integration/lib/common.py b/tools/marvin/marvin/integration/lib/common.py similarity index 100% rename from test/integration/lib/common.py rename to tools/marvin/marvin/integration/lib/common.py diff --git a/test/integration/lib/utils.py b/tools/marvin/marvin/integration/lib/utils.py similarity index 100% rename from test/integration/lib/utils.py rename to tools/marvin/marvin/integration/lib/utils.py diff --git a/tools/marvin/marvin/marvinPlugin.py b/tools/marvin/marvin/marvinPlugin.py index c15fa4d38e9..01fbd6e39b1 100644 --- a/tools/marvin/marvin/marvinPlugin.py +++ b/tools/marvin/marvin/marvinPlugin.py @@ -102,11 +102,11 @@ class MarvinPlugin(Plugin): self._injectClients(cls) def setClient(self, client): - if client: + if client is not None: self.testclient = client def setConfig(self, config): - if config: + if config is not None: self.config = config def _injectClients(self, test): diff --git a/tools/marvin/setup.py b/tools/marvin/setup.py index b2e6d55ec8b..a9621bdae2e 100644 --- a/tools/marvin/setup.py +++ b/tools/marvin/setup.py @@ -34,7 +34,9 @@ setup(name="Marvin", long_description="Marvin is the cloudstack testclient written around the python unittest framework", platforms=("Any",), url="http://jenkins.cloudstack.org:8080/job/marvin", - packages=["marvin", "marvin.cloudstackAPI", "marvin.sandbox", "marvin.sandbox.advanced", "marvin.sandbox.basic"], + packages=["marvin", "marvin.cloudstackAPI", "marvin.integration", + "marvin.integration.lib", "marvin.sandbox", + "marvin.sandbox.advanced", "marvin.sandbox.basic"], license="LICENSE.txt", install_requires=[ "mysql-connector-python",