Skip to content

Commit

Permalink
test_argument_parsing to pytest
Browse files Browse the repository at this point in the history
  • Loading branch information
juditnovak committed Jun 18, 2023
1 parent b8dd076 commit 2d20750
Showing 1 changed file with 184 additions and 206 deletions.
390 changes: 184 additions & 206 deletions tests/unittest/test_argument_parsing.py
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

0 comments on commit 2d20750

Please sign in to comment.