-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b8dd076
commit 2d20750
Showing
1 changed file
with
184 additions
and
206 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,211 +1,189 @@ | ||
import argparse | ||
import logging | ||
import unittest | ||
from argparse import ArgumentParser | ||
from unittest import TestCase | ||
|
||
from spark8t.cli.params import ( | ||
add_config_arguments, | ||
add_deploy_arguments, | ||
add_logging_arguments, | ||
k8s_parser, | ||
parse_arguments_with, | ||
spark_user_parser, | ||
) | ||
|
||
import pytest | ||
|
||
from spark8t.cli.service_account_registry import create_service_account_registry_parser | ||
|
||
|
||
class TestArgumentParsingPySpark(TestCase): | ||
def setUp(self) -> None: | ||
self.shell_parser = parse_arguments_with( | ||
[ | ||
add_logging_arguments, | ||
k8s_parser, | ||
spark_user_parser, | ||
add_config_arguments, | ||
], | ||
argparse.ArgumentParser(exit_on_error=False), | ||
) | ||
self.submit_parser = parse_arguments_with( | ||
[ | ||
add_logging_arguments, | ||
k8s_parser, | ||
spark_user_parser, | ||
add_deploy_arguments, | ||
add_config_arguments, | ||
], | ||
argparse.ArgumentParser(exit_on_error=False), | ||
) | ||
|
||
def test_logging(self): | ||
args, extra_args = self.shell_parser.parse_known_args(["--log-level", "INFO"]) | ||
self.assertEqual(args.log_level, "INFO") | ||
|
||
self.assertRaises( | ||
argparse.ArgumentError, | ||
lambda: self.shell_parser.parse_known_args(["--log-level", "NON-EXISTING"]), | ||
) | ||
|
||
def test_base_config(self): | ||
args, extra_args = self.shell_parser.parse_known_args( | ||
[ | ||
"--conf", | ||
"mykey=myvalue", | ||
"--conf", | ||
"mykey2=myvalue2", | ||
"--properties-file", | ||
"my-property-file", | ||
] | ||
) | ||
self.assertEqual(len(args.conf), 2) | ||
self.assertEqual(args.properties_file, "my-property-file") | ||
|
||
def test_shell_defaults(self): | ||
args, extra_args = self.shell_parser.parse_known_args() | ||
self.assertEqual(args.namespace, "default") | ||
self.assertEqual(args.username, "spark") | ||
|
||
def test_shell(self): | ||
args, extra_args = self.shell_parser.parse_known_args( | ||
[ | ||
"--master", | ||
"my-master", | ||
"--username", | ||
"spark2", | ||
"--namespace", | ||
"ns", | ||
"--kubeconfig", | ||
"my-file", | ||
"--context", | ||
"my-context", | ||
] | ||
) | ||
self.assertEqual(args.master, "my-master") | ||
self.assertEqual(args.username, "spark2") | ||
self.assertEqual(args.namespace, "ns") | ||
self.assertEqual(args.kubeconfig, "my-file") | ||
self.assertEqual(args.context, "my-context") | ||
|
||
def test_submit_defaults(self): | ||
args, extra_args = self.submit_parser.parse_known_args() | ||
self.assertEqual(args.namespace, "default") | ||
self.assertEqual(args.username, "spark") | ||
self.assertEqual(args.deploy_mode, "cluster") | ||
|
||
def test_submit(self): | ||
args, extra_args = self.submit_parser.parse_known_args( | ||
[ | ||
"--master", | ||
"my-master", | ||
"--username", | ||
"spark2", | ||
"--namespace", | ||
"ns", | ||
"--kubeconfig", | ||
"my-file", | ||
"--context", | ||
"my-context", | ||
] | ||
) | ||
self.assertEqual(args.master, "my-master") | ||
self.assertEqual(args.username, "spark2") | ||
self.assertEqual(args.namespace, "ns") | ||
self.assertEqual(args.kubeconfig, "my-file") | ||
self.assertEqual(args.context, "my-context") | ||
|
||
|
||
class TestArgumentParsingServiceAccountRegistry(TestCase): | ||
def setUp(self) -> None: | ||
self.parser = create_service_account_registry_parser( | ||
ArgumentParser(description="Spark Client Setup", exit_on_error=False) | ||
) | ||
|
||
def test_create(self): | ||
args = self.parser.parse_args( | ||
[ | ||
"create", | ||
"--username", | ||
"spark", | ||
"--conf", | ||
"mykey=myvalue", | ||
"--conf", | ||
"mykey2=myvalue2", | ||
] | ||
) | ||
|
||
self.assertEqual(args.action, "create") | ||
self.assertEqual(args.username, "spark") | ||
self.assertEqual(args.namespace, "default") | ||
self.assertEqual(len(args.conf), 2) | ||
|
||
def test_delete(self): | ||
args = self.parser.parse_args( | ||
["delete", "--username", "spark-2", "--namespace", "ns2"] | ||
) | ||
|
||
self.assertEqual(args.action, "delete") | ||
self.assertEqual(args.username, "spark-2") | ||
self.assertEqual(args.namespace, "ns2") | ||
|
||
def test_delete_conf(self): | ||
args = self.parser.parse_args( | ||
["clear-config", "--username", "spark-2", "--namespace", "ns2"] | ||
) | ||
|
||
self.assertEqual(args.action, "clear-config") | ||
self.assertEqual(args.username, "spark-2") | ||
self.assertEqual(args.namespace, "ns2") | ||
|
||
def test_get_conf(self): | ||
args = self.parser.parse_args(["get-config"]) | ||
|
||
self.assertEqual(args.action, "get-config") | ||
self.assertEqual(args.username, "spark") | ||
self.assertEqual(args.namespace, "default") | ||
|
||
def test_add_conf(self): | ||
args = self.parser.parse_args( | ||
[ | ||
"add-config", | ||
"--username", | ||
"spark-3", | ||
"--conf", | ||
"mykey=myvalue", | ||
"--properties-file", | ||
"my-file", | ||
] | ||
) | ||
|
||
self.assertEqual(args.action, "add-config") | ||
self.assertEqual(len(args.conf), 1) | ||
self.assertEqual(args.conf[0], "mykey=myvalue") | ||
self.assertEqual(args.username, "spark-3") | ||
self.assertEqual(args.namespace, "default") | ||
self.assertEqual(args.properties_file, "my-file") | ||
|
||
def test_list(self): | ||
args = self.parser.parse_args(["list", "--kubeconfig", "my-kube-config"]) | ||
|
||
self.assertEqual(args.action, "list") | ||
self.assertEqual(args.kubeconfig, "my-kube-config") | ||
|
||
args = self.parser.parse_args(["list"]) | ||
|
||
self.assertEqual(args.action, "list") | ||
self.assertEqual(args.kubeconfig, None) | ||
|
||
def test_primary(self): | ||
args = self.parser.parse_args(["get-primary", "--master", "my-k8s-api-server"]) | ||
|
||
self.assertEqual(args.action, "get-primary") | ||
self.assertEqual(args.master, "my-k8s-api-server") | ||
|
||
args = self.parser.parse_args(["get-primary"]) | ||
|
||
self.assertEqual(args.action, "get-primary") | ||
self.assertEqual(args.master, None) | ||
|
||
|
||
if __name__ == "__main__": | ||
logging.basicConfig(format="%(asctime)s %(levelname)s %(message)s", level="DEBUG") | ||
unittest.main() | ||
def test_logging(shell_parser): | ||
args, extra_args = shell_parser.parse_known_args(["--log-level", "INFO"]) | ||
assert args.log_level == "INFO" | ||
|
||
with pytest.raises(argparse.ArgumentError): | ||
shell_parser.parse_known_args(["--log-level", "NON-EXISTING"]) | ||
|
||
|
||
def test_base_config(shell_parser): | ||
args, extra_args = shell_parser.parse_known_args( | ||
[ | ||
"--conf", | ||
"mykey=myvalue", | ||
"--conf", | ||
"mykey2=myvalue2", | ||
"--properties-file", | ||
"my-property-file", | ||
] | ||
) | ||
assert len(args.conf) == 2 | ||
assert args.properties_file == "my-property-file" | ||
|
||
|
||
def test_shell_defaults(shell_parser): | ||
args, extra_args = shell_parser.parse_known_args() | ||
assert args.namespace == "default" | ||
assert args.username == "spark" | ||
|
||
|
||
def test_shell(shell_parser): | ||
args, extra_args = shell_parser.parse_known_args( | ||
[ | ||
"--master", | ||
"my-master", | ||
"--username", | ||
"spark2", | ||
"--namespace", | ||
"ns", | ||
"--kubeconfig", | ||
"my-file", | ||
"--context", | ||
"my-context", | ||
] | ||
) | ||
assert args.master == "my-master" | ||
assert args.username == "spark2" | ||
assert args.namespace == "ns" | ||
assert args.kubeconfig == "my-file" | ||
assert args.context == "my-context" | ||
|
||
|
||
def test_submit_defaults(submit_parser): | ||
args, extra_args = submit_parser.parse_known_args() | ||
assert args.namespace == "default" | ||
assert args.username == "spark" | ||
assert args.deploy_mode == "cluster" | ||
|
||
|
||
def test_submit(submit_parser): | ||
args, extra_args = submit_parser.parse_known_args( | ||
[ | ||
"--master", | ||
"my-master", | ||
"--username", | ||
"spark2", | ||
"--namespace", | ||
"ns", | ||
"--kubeconfig", | ||
"my-file", | ||
"--context", | ||
"my-context", | ||
] | ||
) | ||
assert args.master == "my-master" | ||
assert args.username == "spark2" | ||
assert args.namespace == "ns" | ||
assert args.kubeconfig == "my-file" | ||
assert args.context == "my-context" | ||
|
||
|
||
@pytest.fixture | ||
def service_account_registry_parser(): | ||
return create_service_account_registry_parser( | ||
ArgumentParser(description="Spark Client Setup", exit_on_error=False) | ||
) | ||
|
||
|
||
def test_create(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args( | ||
[ | ||
"create", | ||
"--username", | ||
"spark", | ||
"--conf", | ||
"mykey=myvalue", | ||
"--conf", | ||
"mykey2=myvalue2", | ||
] | ||
) | ||
|
||
assert args.action == "create" | ||
assert args.username == "spark" | ||
assert args.namespace == "default" | ||
assert len(args.conf) == 2 | ||
|
||
|
||
def test_delete(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args( | ||
["delete", "--username", "spark-2", "--namespace", "ns2"] | ||
) | ||
|
||
assert args.action == "delete" | ||
assert args.username == "spark-2" | ||
assert args.namespace == "ns2" | ||
|
||
|
||
def test_delete_conf(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args( | ||
["clear-config", "--username", "spark-2", "--namespace", "ns2"] | ||
) | ||
|
||
assert args.action == "clear-config" | ||
assert args.username == "spark-2" | ||
assert args.namespace == "ns2" | ||
|
||
|
||
def test_get_conf(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args(["get-config"]) | ||
|
||
assert args.action == "get-config" | ||
assert args.username == "spark" | ||
assert args.namespace == "default" | ||
|
||
|
||
def test_add_conf(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args( | ||
[ | ||
"add-config", | ||
"--username", | ||
"spark-3", | ||
"--conf", | ||
"mykey=myvalue", | ||
"--properties-file", | ||
"my-file", | ||
] | ||
) | ||
|
||
assert args.action == "add-config" | ||
assert len(args.conf) == 1 | ||
assert args.conf[0] == "mykey=myvalue" | ||
assert args.username == "spark-3" | ||
assert args.namespace == "default" | ||
assert args.properties_file == "my-file" | ||
|
||
|
||
def test_list(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args( | ||
["list", "--kubeconfig", "my-kube-config"] | ||
) | ||
|
||
assert args.action == "list" | ||
assert args.kubeconfig == "my-kube-config" | ||
|
||
args = service_account_registry_parser.parse_args(["list"]) | ||
|
||
assert args.action == "list" | ||
assert args.kubeconfig is None | ||
|
||
|
||
def test_primary(service_account_registry_parser): | ||
args = service_account_registry_parser.parse_args( | ||
["get-primary", "--master", "my-k8s-api-server"] | ||
) | ||
|
||
assert args.action == "get-primary" | ||
assert args.master == "my-k8s-api-server" | ||
|
||
args = service_account_registry_parser.parse_args(["get-primary"]) | ||
|
||
assert args.action == "get-primary" | ||
assert args.master is None |