def test_config_add_interactive(self): """ verify that you can add a user interactively using `jut config add` """ with temp_jut_tools_home(): configuration = config.get_default() app_url = configuration["app_url"] # -s because getpass reads from the tty and screws up automated testing process = jut("config", "add", "-a", app_url, "-s") process.expect_output("Username: "******"jut-tools-user01\n") process.expect_output("Password: "******"bigdata\n") process.expect_status(0) # check the `jut config list` shows the right output process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, "jut-tools-user01", app_url, default=True)) process.expect_eof()
def test_config_rm_non_default_non_interactive(self): """ verify you can non interactively remove a non default configuration """ with temp_jut_tools_home(): jut_user = os.environ.get("JUT_USER") jut_pass = os.environ.get("JUT_PASS") configuration = config.get_default() app_url = configuration["app_url"] process = jut("config", "add", "-u", jut_user, "-p", jut_pass, "-a", app_url) process.expect_status(0) process = jut("config", "add", "-u", "jut-tools-user01", "-p", "bigdata", "-a", app_url) process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=False)) process = jut("config", "rm", "-u", "jut-tools-user01", "-a", app_url) process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_eof()
def test_negative_config_list(self): """ when calling `jut config list` if you haven't configured yet we should fail correctly and print the appropriate message """ with temp_jut_tools_home(): process = jut("config", "list") process.expect_error(NO_CONFIG_MESSAGE) process.expect_status(255) process.expect_eof()
def test_jut_jobs_connect_on_persistent_job(self): """ verify we can reconnect to a persistent job """ with temp_jut_tools_home(): configuration = config.get_default() app_url = configuration['app_url'] process = jut('config', 'add', '-u', 'jut-tools-user03', '-p', 'bigdata', '-a', app_url, '-d') process.expect_status(0) process = jut('run', '--name', 'Persistent Job #3', '-p', 'emit -limit 10000 ' '| put source_type="event", foo="bar"' '| (write -space "%s"; keep foo | pass)' % JutJobsTests.test_space) process.expect_status(0) job_id = process.read_output().strip() process = jut('jobs', 'connect', job_id, '-f', 'text') # verify that we output 'bar' a few times process.expect_output('bar\n') process.expect_output('bar\n') process.expect_output('bar\n') process.expect_output('bar\n') process.expect_output('bar\n') process.send_signal(signal.SIGTERM) process.expect_status(-signal.SIGTERM) process = jut('jobs', 'kill', job_id, '-y') process.expect_status(0) process.expect_eof() process = jut('jobs', 'list') process.expect_status(0) process.expect_error('No running jobs')
def test_config_rm_default_interactive(self): """ verify you can interactively remove a default configuration and be prompted to pick a new default """ with temp_jut_tools_home(): jut_user = os.environ.get("JUT_USER") jut_pass = os.environ.get("JUT_PASS") configuration = config.get_default() app_url = configuration["app_url"] process = jut("config", "add", "-u", jut_user, "-p", jut_pass, "-a", app_url) process.expect_status(0) process = jut("config", "add", "-u", "jut-tools-user01", "-p", "bigdata", "-a", app_url) process.expect_status(0) process = jut("config", "add", "-u", "jut-tools-user02", "-p", "bigdata", "-a", app_url) process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=False)) process.expect_output(confline(3, "jut-tools-user02", app_url, default=False)) process = jut("config", "rm") process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=False)) process.expect_output(confline(3, "jut-tools-user02", app_url, default=False)) process.expect_output("Which configuration to remove: ") process.send("1\n") process.expect_output("Pick a default configuration from the list below\n") process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, "jut-tools-user01", app_url, default=False)) process.expect_output(confline(2, "jut-tools-user02", app_url, default=False)) process.expect_output("Set default configuration to: ") process.send("2\n") process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, "jut-tools-user01", app_url, default=False)) process.expect_output(confline(2, "jut-tools-user02", app_url, default=True)) process.expect_eof()
def test_jut_kill_on_persistent_job(self): """ verify that a persistent job can be killed using `jut jobs kill` """ with temp_jut_tools_home(): configuration = config.get_default() app_url = configuration['app_url'] process = jut('config', 'add', '-u', 'jut-tools-user02', '-p', 'bigdata', '-a', app_url, '-d') process.expect_status(0) process = jut('run', '--name', 'Persistent Job #1', '-p', 'emit -limit 10000 ' '| put source_type="event" ' '| write -space "%s"' % JutJobsTests.test_space) process.expect_status(0) job_id = process.read_output().strip() process = jut('jobs', 'list', '-f', 'text') process.expect_status(0) output = process.read_output() lines = output.split('\n') re.match(r'Job ID\w+Juttle Name\w+Owner\w+Start Date\w+Persistent', lines[0]) re.match(r'%s\w+Persistent Job #1\w+jut-tools-user02.*YES' % job_id, lines[1]) process = jut('jobs', 'kill', job_id, '-y') process.expect_status(0) process.expect_eof() process = jut('jobs', 'list') process.expect_status(0) process.expect_error('No running jobs')
def test_config_add_non_interactive(self): """ add a few tests accounts to the default configuration and then add those configurations to the current jut tools config """ with temp_jut_tools_home(): configuration = config.get_default() app_url = configuration["app_url"] process = jut("config", "add", "-u", "jut-tools-user01", "-p", "bigdata", "-a", app_url) process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, "jut-tools-user01", app_url, default=True)) process.expect_eof()
def test_config_defaults_interactive(self): """ verify you can interactively modify the config default """ with temp_jut_tools_home() as home_dir: jut_user = os.environ.get("JUT_USER") jut_pass = os.environ.get("JUT_PASS") configuration = config.get_default() app_url = configuration["app_url"] process = jut("config", "add", "-u", jut_user, "-p", jut_pass, "-a", app_url) process.expect_status(0) process = jut("config", "add", "-u", "jut-tools-user01", "-p", "bigdata", "-a", app_url) process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=False)) process = jut("config", "defaults") process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=False)) process.expect_output("Set default configuration to: ") process.send("2\n") process.expect_output("Configuration updated at %s\n" % home_dir) process.expect_status(0) process.expect_eof() process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=False)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=True)) process.expect_eof()
def test_jut_jobs_with_running_jobs(self): """ verify that a simple long running program can be displayed correctly when running `jut jobs list` """ with temp_jut_tools_home(): configuration = config.get_default() app_url = configuration['app_url'] process = jut('config', 'add', '-u', 'jut-tools-user01', '-p', 'bigdata', '-a', app_url, '-d') process.expect_status(0) process = jut('run', '--name', 'Persistent Job #1', '-p', 'emit -limit 100 ' '| put source_type="event" ' '| write -space "%s"' % JutJobsTests.test_space) process.expect_status(0) job_id = process.read_output() process = jut('jobs', 'list', '-f', 'text') process.expect_status(0) output = process.read_output() lines = output.split('\n') re.match(r'Job ID\w+Juttle Name\w+Owner\w+Start Date\w+Persistent', lines[0]) re.match(r'%s\w+Persistent Job #1\w+jut-tools-user01.*YES' % job_id, lines[1])
def test_config_defaults_non_interactive(self): """ see that you can easily change the default configuration in use and that it switches back once you delete the default configuration """ with temp_jut_tools_home() as home_dir: jut_user = os.environ.get("JUT_USER") jut_pass = os.environ.get("JUT_PASS") configuration = config.get_default() app_url = configuration["app_url"] process = jut("config", "add", "-u", jut_user, "-p", jut_pass, "-a", app_url) process.expect_status(0) process = jut("config", "add", "-u", "jut-tools-user01", "-p", "bigdata", "-a", app_url) process.expect_status(0) process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=True)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=False)) process.expect_eof() process = jut("config", "defaults", "-u", "jut-tools-user01", "-a", app_url) process.expect_status(0) process.expect_output("Configuration updated at %s\n" % home_dir) process.expect_eof() process = jut("config", "list") process.expect_status(0) process.expect_output("Available jut configurations:\n") process.expect_output(confline(1, jut_user, app_url, default=False)) process.expect_output(confline(2, "jut-tools-user01", app_url, default=True)) process.expect_eof()