From c5dd8c3098290aba34792f10b5daaba4aa88a531 Mon Sep 17 00:00:00 2001 From: tamarrow Date: Wed, 8 Feb 2017 11:24:07 -0800 Subject: [PATCH] tests: cleanup redundant test files (#899) --- cli/tests/data/help/auth.txt | 40 ----- cli/tests/data/help/config.txt | 43 ----- cli/tests/data/help/dcos.txt | 34 ---- cli/tests/data/help/help.txt | 24 --- cli/tests/data/help/job.txt | 81 --------- cli/tests/data/help/marathon.txt | 179 -------------------- cli/tests/data/help/node.txt | 87 ---------- cli/tests/data/help/service.txt | 49 ------ cli/tests/data/help/task.txt | 55 ------ cli/tests/data/help/task_exec.txt | 22 --- cli/tests/integrations/test_config.py | 6 - cli/tests/integrations/test_dcos.py | 4 +- cli/tests/integrations/test_experimental.py | 11 +- cli/tests/integrations/test_help.py | 16 +- cli/tests/integrations/test_job.py | 2 +- cli/tests/integrations/test_marathon.py | 2 +- cli/tests/integrations/test_node.py | 2 +- cli/tests/integrations/test_service.py | 2 +- cli/tests/integrations/test_task.py | 2 +- 19 files changed, 18 insertions(+), 643 deletions(-) delete mode 100644 cli/tests/data/help/auth.txt delete mode 100644 cli/tests/data/help/config.txt delete mode 100644 cli/tests/data/help/dcos.txt delete mode 100644 cli/tests/data/help/help.txt delete mode 100644 cli/tests/data/help/job.txt delete mode 100644 cli/tests/data/help/marathon.txt delete mode 100644 cli/tests/data/help/node.txt delete mode 100644 cli/tests/data/help/service.txt delete mode 100644 cli/tests/data/help/task.txt delete mode 100644 cli/tests/data/help/task_exec.txt diff --git a/cli/tests/data/help/auth.txt b/cli/tests/data/help/auth.txt deleted file mode 100644 index c5a67db..0000000 --- a/cli/tests/data/help/auth.txt +++ /dev/null @@ -1,40 +0,0 @@ -Description: - Authenticate to DC/OS cluster - -Usage: - dcos auth --help - dcos auth --info - dcos auth list-providers [--json] - dcos auth login - [--provider=] [--username=] - [--password= | --password-file= - | --password-env= | --private-key=] - dcos auth logout - -Commands: - list-providers - List configured authentication providers for your DC/OS cluster. - login - Login to your DC/OS cluster. - logout - Logout of your DC/OS cluster. - -Options: - -h, --help - Print usage. - --info - Print a short description of this subcommand. - --password= - Specify password on the command line (insecure). - --password-env= - Specify an environment variable name that contains the password. - --password-file= - Specify the path to a file that contains the password. - --provider= - Specify the authentication provider to use for login. - --private-key= - Specify the path to a file that contains the private key. - --username= - Specify the username for login. - --version - Print version information. diff --git a/cli/tests/data/help/config.txt b/cli/tests/data/help/config.txt deleted file mode 100644 index ae7f270..0000000 --- a/cli/tests/data/help/config.txt +++ /dev/null @@ -1,43 +0,0 @@ -Description: - Manage the DC/OS configuration file. - -Usage: - dcos config --help - dcos config --info - dcos config set - dcos config show [] - dcos config unset - dcos config validate - -Commands: - set - Add or set a DC/OS configuration property. - show - Print the DC/OS configuration file contents. - unset - Remove a property from the configuration file. - validate - Validate changes to the configuration file. - -Options: - -h, --help - Print usage. - --info - Print a short description of this subcommand. - --version - Print version information. - -Positional Arguments: - - The name of the property. - - The value of the property. - -Environment Variables: - Configuration properties all have corresponding environment variables. If a - property is in the "core" section (ex. "core.foo"), it corresponds to - environment variable DCOS_FOO. All other properties (ex "foo.bar") - correspond to enviroment variable DCOS_FOO_BAR. - - Environment variables take precendence over corresponding configuration - property. diff --git a/cli/tests/data/help/dcos.txt b/cli/tests/data/help/dcos.txt deleted file mode 100644 index d372cd4..0000000 --- a/cli/tests/data/help/dcos.txt +++ /dev/null @@ -1,34 +0,0 @@ -Description: - The Mesosphere Datacenter Operating System (DC/OS) spans all of the machines in -your datacenter or cloud and treats them as a single, shared set of resources. - -Usage: - dcos [options] [] [...] - -Options: - --debug - Enable debug mode. - --help - Print usage. - --log-level= - Set the logging level. This setting does not affect the output sent to - stdout. The severity levels are: - The severity level: - * debug Prints all messages. - * info Prints informational, warning, error, and critical messages. - * warning Prints warning, error, and critical messages. - * error Prints error and critical messages. - * critical Prints only critical messages to stderr. - --version - Print version information - -Environment Variables: - DCOS_CONFIG - Set the path to the DC/OS configuration file. By default, this variable - is set to ~/.dcos/dcos.toml. - DCOS_DEBUG - Indicates whether to print additional debug messages to stdout. By - default this is set to false. - DCOS_LOG_LEVEL - Prints log messages to stderr at or above the level indicated. This is - equivalent to the --log-level command-line option. diff --git a/cli/tests/data/help/help.txt b/cli/tests/data/help/help.txt deleted file mode 100644 index 45e81b8..0000000 --- a/cli/tests/data/help/help.txt +++ /dev/null @@ -1,24 +0,0 @@ -Description: - Display help information about DC/OS. - -Usage: - dcos help - dcos help --help - dcos help --info - dcos help - -Commands: - help - Print help information about a subcommand. - -Options: - --help - Print usage. - --info - Print a short description of this subcommand. - --version - Print version information. - -Positional Arguments: - - The subcommand name. diff --git a/cli/tests/data/help/job.txt b/cli/tests/data/help/job.txt deleted file mode 100644 index 11eddcd..0000000 --- a/cli/tests/data/help/job.txt +++ /dev/null @@ -1,81 +0,0 @@ -Description: - Deploy and manage jobs in DC/OS. - - Usage: - dcos job --help - dcos job --version - dcos job --config-schema - dcos job --info - dcos job add - dcos job remove [--stop-current-job-runs] - dcos job show - dcos job update - dcos job kill [run-id][--all] - dcos job run - dcos job list [--json] - dcos job schedule add - dcos job schedule show [--json] - dcos job schedule remove - dcos job schedule update - dcos job show runs [--run-id ][--json][--q] - dcos job history [--json][--show-failures] - -Commands: - job add - Add a job. - job remove - Remove a job. - job show - Show the job. - job update - Update the job. - job kill - Kill the job. - job run - Run a job now. - job list - Show all job definitions. - job schedule add - Adds a schedule to a job. - job schedule show - Shows the schedules of a job. - job schedule remove - Removes a schedule from a job. - job schedule update - Updates a schedule on a job. - job show runs - Shows the successful and failure runs of a job. - job history - Provides a job run history. - -Options: - -h, --help - Print usage. - --version - Print version information. - --config-schema - Show the configuration schema for the Metronome subcommand. - --info - Print a short description of this subcommand. - --stop-current-job-runs - Indicates on a job removal that all current running jobs should be killed. - --all - Instead of specifying a run_id to kill, indicates all runs should be killed. - --json - Print JSON-formatted list instead of a table. - --q - Indicates a quiet mode which results in just an array of run ids. - --show-failures - Indicates to show the failure table and statistics for history. - -Positional Arguments: - - The job ID. - - A JSON formatted file of a job. - - The run ID of a job run. - - A JSON formatted file of a job schedule. - - The schedule ID. diff --git a/cli/tests/data/help/marathon.txt b/cli/tests/data/help/marathon.txt deleted file mode 100644 index 4262b2a..0000000 --- a/cli/tests/data/help/marathon.txt +++ /dev/null @@ -1,179 +0,0 @@ -Description: - Deploy and manage applications to DC/OS. - -Usage: - dcos marathon --config-schema - dcos marathon --help - dcos marathon --info - dcos marathon about - dcos marathon app add [] - dcos marathon app list [--json] - dcos marathon app remove [--force] - dcos marathon app restart [--force] - dcos marathon app show [--app-version=] - dcos marathon app start [--force] [] - dcos marathon app stop [--force] - dcos marathon app kill [--scale] [--host=] - dcos marathon app update [--force] [...] - dcos marathon app version list [--max-count=] - dcos marathon deployment list [--json ] - dcos marathon deployment rollback - dcos marathon deployment stop - dcos marathon deployment watch [--max-count=] - [--interval=] - dcos marathon group add [] - dcos marathon group list [--json] - dcos marathon group scale [--force] - dcos marathon group show [--group-version=] - dcos marathon group remove [--force] - dcos marathon group update [--force] [...] - dcos marathon pod add [] - dcos marathon pod kill [...] - dcos marathon pod list [--json] - dcos marathon pod remove [--force] - dcos marathon pod show - dcos marathon pod update [--force] - dcos marathon debug list [--json] - dcos marathon debug summary [--json] - dcos marathon debug details [--json] - dcos marathon task list [--json ] - dcos marathon task stop [--wipe] - dcos marathon task show - -Commands: - about - Print info.json for DC/OS Marathon. - app add - Add an application. - app list - List the installed applications. - app remove - Remove an application. - app restart - Restart an application. - app show - Show the `marathon.json` for an application. - app start - Start an application. - app stop - Stop an application. - app kill - Kill a running application instance. - app update - Update an application. - app version list - List the version history of an application. - deployment list - Print a list of currently deployed applications. - deployment rollback - Remove a deployed application. - deployment stop - Cancel the in-progress deployment of an application. - deployment watch - Monitor deployments. - group add - Create a new group. - group list - Print the list of groups. - group scale - Scale a group. - group show - Print a detailed list of groups. - group remove - Remove a group. - group update - Update a group. - pod add - Create a new pod. - pod kill - Kill one or more running pod instances. - pod list - List the deployed pods. - pod remove - Remove a pod. - pod show - Display detailed information for a specific pod. - pod update - Update a pod. - debug list - Print a list of currently queued instance launches for - debugging purpose. - debug summary - Display summarized information for a queued instance launch - for debugging purpose. - debug details - Display detailed information for a queued instance launch - for debugging purpose. - task list - List all tasks. - task stop - Stop a task. Wipe persistent data if `--wipe` is set. - task show - List a specific task. - -Options: - --app-version= - The version of the application to use. It can be specified as an - absolute or relative value. Absolute values must be in ISO8601 date - format. Relative values must be specified as a negative integer and they - represent the version from the currently deployed application definition. - --config-schema - Show the configuration schema for the Marathon subcommand. - --force - Disable checks in Marathon during updates. - --group-version= - The group version to use for the command. It can be specified as an - absolute or relative value. Absolute values must be in ISO8601 date - format. Relative values must be specified as a negative integer and they - represent the version from the currently deployed group definition. - -h, --help - Print usage. - --host= - The hostname that is running app. - --info - Print a short description of this subcommand. - --interval= - Number of seconds to wait between actions. - --json - Print JSON-formatted data. - --max-count= - Maximum number of entries to fetch and return. - --scale - Scale the app down after performing the the operation. - --version - Print version information. - -Positional Arguments: - - The application ID. - - Path to a file or HTTP(S) URL that contains the app's JSON definition. - If omitted, the definition is read from stdin. For a detailed - description see - https://mesosphere.github.io/marathon/docs/rest-api.html#post-v2-apps. - - The deployment ID. - - The group ID. - - Path to a file or HTTP(S) URL that contains the group's JSON definition. - If omitted, the definition is read from stdin. For a detailed - description see - https://mesosphere.github.io/marathon/docs/rest-api.html#post-v2-groups. - - List of one or more space-separated pod instance IDs. - - The number of instances. - - The pod ID. - - Path to a file or HTTP(S) URL that contains the pod's JSON definition. - If omitted, the definition is read from stdin. - - List of space-separated JSON object properties to update. The list - must be formatted as =. For example, `cpus=2.0 mem=308`. - If omitted, properties are read from a JSON object provided on stdin. - - The task ID. - - The factor to scale an application group by. diff --git a/cli/tests/data/help/node.txt b/cli/tests/data/help/node.txt deleted file mode 100644 index 6bc270b..0000000 --- a/cli/tests/data/help/node.txt +++ /dev/null @@ -1,87 +0,0 @@ -Description: - Administer and manage DC/OS cluster nodes. - -Usage: - dcos node --help - dcos node --info - dcos node [--json] - dcos node log [--follow --lines=N --leader --master --mesos-id= --slave=] - [--component= --filter=...] - dcos node list-components [--leader --mesos-id= --json] - dcos node ssh [--option SSHOPT=VAL ...] - [--config-file=] - [--user=] - [--master-proxy] - (--leader | --master | --mesos-id= | --slave=) - [] - dcos node diagnostics create ()... - dcos node diagnostics delete - dcos node diagnostics download [--location=] - dcos node diagnostics (--list | --status | --cancel) [--json] - -Commands: - log - Prints the Mesos logs for the leading master node, agent nodes, or both. - ssh - Establish an SSH connection to the master or agent nodes of your DC/OS - cluster. - diagnostics create - Create a diagnostics bundle. Nodes can be: ip address, hostname, mesos ID - or keywords "all", "masters", "agents" (notice the quotes around the keywords). - diagnostics download - Download a diagnostics bundle. - diagnostics delete - Delete a diagnostics bundle. - -Options: - --config-file= - Path to SSH configuration file. - --follow - Dynamically update the log. - -h, --help - Show this screen. - --info - Show a short description of this subcommand. - --json - Print JSON-formatted list of nodes. - --leader - The leading master. - --lines=N - Print the last N lines, where 10 is the default. - --master - Deprecated. Please use --leader. - --master-proxy - Proxy the SSH connection through a master node. This can be useful when - accessing DC/OS from a separate network. For example, in the default AWS - configuration, the private slaves are unreachable from the public - internet. You can access them using this option, which will first hop - from the publicly available master. - --option SSHOPT=VAL - The SSH options. For information, enter `man ssh_config` in your - terminal. - --slave= - Agent node with the provided ID. - --user= - The SSH user, where the default user [default: core]. - --list - List available diagnostics bundles. - --status - Print diagnostics job status. - --cancel - Cancel a running diagnostics job. - --location= - Download a diagnostics bundle to a particular location. - If not set, default to present working directory. - --version - Print version information. - --list-components - Print a list of available DC/OS components on specified node. - --component= - Show DC/OS component logs. - --filter= - Filter logs by field and value. Filter must be a string separated by colon. - For example: --filter _PID:0 --filter _UID:1 - -Positional Arguments: - - Command to execute on the DCOS cluster node. diff --git a/cli/tests/data/help/service.txt b/cli/tests/data/help/service.txt deleted file mode 100644 index e5d789f..0000000 --- a/cli/tests/data/help/service.txt +++ /dev/null @@ -1,49 +0,0 @@ -Description: - Manage DC/OS services. - -Usage: - dcos service --help - dcos service --info - dcos service [--completed --inactive --json] - dcos service log [--follow --lines=N --ssh-config-file=] - [] - dcos service shutdown - -Commands: - log - Print the service logs. - - shutdown - Shutdown a service. - -Options: - --completed - Show the completed and active services. Completed services have either - been disconnected from master and reached their failover timeout, or - have been explicitly shutdown via the /shutdown endpoint. - -h, --help - Print usage. - --follow - Print data as the log file grows. - --inactive - Show the inactive and active services. Inactive services have been - disconnected from master, but haven't yet reached their failover timeout. - --info - Print a short description of this subcommand. - --json - Print JSON-formatted list of DC/OS services. - --lines=N - Print the last N lines, where 10 is the default. - --ssh-config-file= - The path to the SSH config file. This is used to access the Marathon - logs. - --version - Print version information. - -Positional Arguments: - - The service log filename for the Mesos sandbox. The default is stdout. - - The DC/OS Service name. - - The DC/OS Service ID. diff --git a/cli/tests/data/help/task.txt b/cli/tests/data/help/task.txt deleted file mode 100644 index 2616d4f..0000000 --- a/cli/tests/data/help/task.txt +++ /dev/null @@ -1,55 +0,0 @@ -Description: - Manage DC/OS tasks. - -Usage: - dcos task --help - dcos task --info - dcos task exec [--interactive --tty] [...] - dcos task log [--completed --follow --lines=N] [] [] - dcos task ls [--long --completed] [] [] - dcos task [--completed --json ] - -Command: - exec - Launch a process () inside of a container for a task (). - - log - Print the task log. By default, the 10 most recent task logs from stdout - are printed. - ls - Print the list of files in the Mesos task sandbox. - -Options: - --completed - Print completed and in-progress tasks. - -h, --help - Print usage. - --info - Print a short description of this subcommand. - -i, --interactive - Attach a STDIN stream to the remote command for an interactive session. - -t, --tty - Attach a tty to the remote stream. - --follow - Dynamically update the log. - --json - Print JSON-formatted list of tasks. - --lines=N - Print the last N lines. The default is 10 lines. - --long - Print full Mesos sandbox file attributes. - --version - Print version information. - -Positional Arguments: - - The command to run inside the remote task's container. - For example: `/bin/bash`. - - Additional arguments to pass to the command (). - - Specify the sandbox file to print. The default is stdout. - - The Mesos sandbox directory path. The default is '.'. - - A full task ID, a partial task ID, or a regular expression. diff --git a/cli/tests/data/help/task_exec.txt b/cli/tests/data/help/task_exec.txt deleted file mode 100644 index ca7aa0f..0000000 --- a/cli/tests/data/help/task_exec.txt +++ /dev/null @@ -1,22 +0,0 @@ -Description: - Launch an arbitrary command inside a running DC/OS task. - -Usage: - dcos-task-exec [--interactive --tty] [...] - -Command: - exec - Launch a process () inside of a container for a task (). - -Options: - -i, --interactive - Attach a STDIN stream to the remote command for an interactive session. - -t, --tty - Attach a tty to the remote stream. - -Positional Arguments: - - The command to run inside the remote task's container. - For example: `/bin/bash`. - - Additional arguments to pass to the command (). diff --git a/cli/tests/integrations/test_config.py b/cli/tests/integrations/test_config.py index 5f30e1b..3235933 100644 --- a/cli/tests/integrations/test_config.py +++ b/cli/tests/integrations/test_config.py @@ -21,12 +21,6 @@ def env(): return r -def test_help(): - with open('tests/data/help/config.txt') as content: - assert_command(['dcos', 'config', '--help'], - stdout=content.read().encode('utf-8')) - - def test_info(): stdout = b'Manage the DC/OS configuration file\n' assert_command(['dcos', 'config', '--info'], diff --git a/cli/tests/integrations/test_dcos.py b/cli/tests/integrations/test_dcos.py index c7d2680..b43e48a 100644 --- a/cli/tests/integrations/test_dcos.py +++ b/cli/tests/integrations/test_dcos.py @@ -8,13 +8,13 @@ def test_default(): def test_help(): - with open('tests/data/help/dcos.txt') as content: + with open('dcoscli/data/help/dcos.txt') as content: assert_command(['dcos', '--help'], stdout=content.read().encode('utf-8')) def test_dcos_help(): - with open('tests/data/help/dcos.txt') as content: + with open('dcoscli/data/help/dcos.txt') as content: assert_command(['dcos', 'help'], stdout=content.read().encode('utf-8')) diff --git a/cli/tests/integrations/test_experimental.py b/cli/tests/integrations/test_experimental.py index 9c46fc3..49c3f34 100644 --- a/cli/tests/integrations/test_experimental.py +++ b/cli/tests/integrations/test_experimental.py @@ -13,18 +13,13 @@ from .common import (assert_command, exec_command, zip_contents_as_json) command_base = ['dcos', 'experimental'] -data_dir = os.path.join( - os.getcwd(), 'tests', 'data' -) -build_data_dir = os.path.join( - data_dir, 'package_build' -) +data_dir = os.path.join(os.getcwd(), 'tests', 'data') +build_data_dir = os.path.join(data_dir, 'package_build') def runnable_package_path(index): return os.path.join( - build_data_dir, 'helloworld', 'helloworld{}.json'.format(index) - ) + build_data_dir, 'helloworld', 'helloworld{}.json'.format(index)) def test_experimental(): diff --git a/cli/tests/integrations/test_help.py b/cli/tests/integrations/test_help.py index 04e42d3..a68a898 100644 --- a/cli/tests/integrations/test_help.py +++ b/cli/tests/integrations/test_help.py @@ -2,7 +2,7 @@ from .common import assert_command def test_help(): - with open('tests/data/help/help.txt') as content: + with open('dcoscli/data/help/help.txt') as content: assert_command(['dcos', 'help', '--help'], stdout=content.read().encode('utf-8')) @@ -18,25 +18,25 @@ def test_version(): def test_help_config(): - with open('tests/data/help/config.txt') as content: + with open('dcoscli/data/help/config.txt') as content: assert_command(['dcos', 'help', 'config'], stdout=content.read().encode('utf-8')) def test_help_job(): - with open('tests/data/help/job.txt') as content: + with open('dcoscli/data/help/job.txt') as content: assert_command(['dcos', 'help', 'job'], stdout=content.read().encode('utf-8')) def test_help_marathon(): - with open('tests/data/help/marathon.txt') as content: + with open('dcoscli/data/help/marathon.txt') as content: assert_command(['dcos', 'help', 'marathon'], stdout=content.read().encode('utf-8')) def test_help_node(): - with open('tests/data/help/node.txt') as content: + with open('dcoscli/data/help/node.txt') as content: assert_command(['dcos', 'help', 'node'], stdout=content.read().encode('utf-8')) @@ -48,18 +48,18 @@ def test_help_package(): def test_help_service(): - with open('tests/data/help/service.txt') as content: + with open('dcoscli/data/help/service.txt') as content: assert_command(['dcos', 'help', 'service'], stdout=content.read().encode('utf-8')) def test_help_task(): - with open('tests/data/help/task.txt') as content: + with open('dcoscli/data/help/task.txt') as content: assert_command(['dcos', 'help', 'task'], stdout=content.read().encode('utf-8')) def test_help_auth(): - with open('tests/data/help/auth.txt') as content: + with open('dcoscli/data/help/auth.txt') as content: assert_command(['dcos', 'help', 'auth'], stdout=content.read().encode('utf-8')) diff --git a/cli/tests/integrations/test_job.py b/cli/tests/integrations/test_job.py index 8fdea0b..b913948 100644 --- a/cli/tests/integrations/test_job.py +++ b/cli/tests/integrations/test_job.py @@ -11,7 +11,7 @@ from .common import (assert_command, exec_command, job, show_job, def test_help(): - with open('tests/data/help/job.txt') as content: + with open('dcoscli/data/help/job.txt') as content: assert_command(['dcos', 'job', '--help'], stdout=content.read().encode('utf-8')) diff --git a/cli/tests/integrations/test_marathon.py b/cli/tests/integrations/test_marathon.py index 1ca3888..5d48338 100644 --- a/cli/tests/integrations/test_marathon.py +++ b/cli/tests/integrations/test_marathon.py @@ -20,7 +20,7 @@ _ZERO_INSTANCE_APP_INSTANCES = 100 def test_help(): - with open('tests/data/help/marathon.txt') as content: + with open('dcoscli/data/help/marathon.txt') as content: assert_command(['dcos', 'marathon', '--help'], stdout=content.read().encode('utf-8')) diff --git a/cli/tests/integrations/test_node.py b/cli/tests/integrations/test_node.py index 7f15d29..0d03733 100644 --- a/cli/tests/integrations/test_node.py +++ b/cli/tests/integrations/test_node.py @@ -14,7 +14,7 @@ from ..fixtures.node import slave_fixture def test_help(): - with open('tests/data/help/node.txt') as content: + with open('dcoscli/data/help/node.txt') as content: stdout = six.b(content.read()) assert_command(['dcos', 'node', '--help'], stdout=stdout) diff --git a/cli/tests/integrations/test_service.py b/cli/tests/integrations/test_service.py index 3e45ee5..618a0ab 100644 --- a/cli/tests/integrations/test_service.py +++ b/cli/tests/integrations/test_service.py @@ -27,7 +27,7 @@ def teardown_module(module): def test_help(): - with open('tests/data/help/service.txt') as content: + with open('dcoscli/data/help/service.txt') as content: assert_command(['dcos', 'service', '--help'], stdout=content.read().encode('utf-8')) diff --git a/cli/tests/integrations/test_task.py b/cli/tests/integrations/test_task.py index 7ca3562..ef03ec5 100644 --- a/cli/tests/integrations/test_task.py +++ b/cli/tests/integrations/test_task.py @@ -45,7 +45,7 @@ def teardown_module(): def test_help(): - with open('tests/data/help/task.txt') as content: + with open('dcoscli/data/help/task.txt') as content: assert_command(['dcos', 'task', '--help'], stdout=content.read().encode('utf-8'))