diff --git a/doc/rose-configuration.html b/doc/rose-configuration.html index f6d71ef817..e8853b808f 100644 --- a/doc/rose-configuration.html +++ b/doc/rose-configuration.html @@ -925,8 +925,8 @@

Appendix: rose-ana configuration [Compare Gradiant] comparison=Exact extract=OutputGrepper:' gradJ= \s*(\S+)' -kgo1file=$SUITE_CONTROL_DIR/log/job/{}.1.1.out -resultfile=$ROSE_SUITE_DIR/log/job/{}.1.1.out +kgo1file=$SUITE_CONTROL_DIR/log/job/1/{}/NN/out +resultfile=$ROSE_SUITE_DIR/log/job/1/{}/NN/out diff --git a/lib/python/rose/apps/rose_prune.py b/lib/python/rose/apps/rose_prune.py index 102979c4bf..0d61e4833c 100644 --- a/lib/python/rose/apps/rose_prune.py +++ b/lib/python/rose/apps/rose_prune.py @@ -34,7 +34,7 @@ class RosePruneApp(BuiltinApp): SCHEME = "rose_prune" SECTION = "prune" - def run(self, app_runner, conf_tree, *_): + def run(self, app_runner, conf_tree, opts, args, uuid, work_files): """Suite housekeeping application. This application is designed to work under "rose task-run" in a cycling @@ -60,25 +60,9 @@ def run(self, app_runner, conf_tree, *_): if archive_logs_cycles: app_runner.suite_engine_proc.job_logs_archive( suite_name, archive_logs_cycles) - globs = [] + globs = (self._get_prune_globs(app_runner, conf_tree, "datac") + + self._get_prune_globs(app_runner, conf_tree, "work")) suite_engine_proc = app_runner.suite_engine_proc - for key, max_args in [("datac", 1), ("work", 2)]: - for cycle, cycle_args in self._get_conf(conf_tree, - "prune-" + key + "-at", - max_args=max_args): - tail_globs = None - if cycle_args: - tail_globs = shlex.split(cycle_args.pop()) - head_globs = None - if cycle_args: - head_globs = shlex.split(cycle_args.pop()) - for head in suite_engine_proc.get_cycle_items_globs( - key, cycle, head_globs): - if tail_globs: - for tail_glob in tail_globs: - globs.append(os.path.join(head, tail_glob)) - else: - globs.append(head) hosts = suite_engine_proc.get_suite_jobs_auths(suite_name) suite_dir_rel = suite_engine_proc.get_suite_dir_rel(suite_name) form_dict = {"d": suite_dir_rel, "g": " ".join(globs)} @@ -164,3 +148,21 @@ def _get_conf(self, conf_tree, key, max_args=0): else: items.append(cycle) return items + + def _get_prune_globs(self, app_runner, conf_tree, key): + """Return prune globs for "key".""" + globs = [] + for cycle, cycle_args in self._get_conf(conf_tree, + "prune-" + key + "-at", + max_args=1): + tail_globs = None + if cycle_args: + tail_globs = shlex.split(cycle_args.pop()) + for head in app_runner.suite_engine_proc.get_cycle_items_globs( + key, cycle): + if tail_globs: + for tail_glob in tail_globs: + globs.append(os.path.join(head, tail_glob)) + else: + globs.append(head) + return globs diff --git a/lib/python/rose/suite_engine_proc.py b/lib/python/rose/suite_engine_proc.py index 79c066cc2c..339baa8f6d 100644 --- a/lib/python/rose/suite_engine_proc.py +++ b/lib/python/rose/suite_engine_proc.py @@ -20,6 +20,7 @@ """Suite engine processor management.""" from datetime import datetime, timedelta +from glob import glob from isodatetime.data import Duration from isodatetime.parsers import DurationParser import os @@ -260,6 +261,7 @@ class TaskProps(object): "task_suffix": "ROSE_TASK_SUFFIX", "cycling_mode": "ROSE_CYCLING_MODE", "task_cycle_time": "ROSE_TASK_CYCLE_TIME", + "task_log_dir": "ROSE_TASK_LOG_DIR", "task_log_root": "ROSE_TASK_LOG_ROOT", "task_is_cold_start": "ROSE_TASK_IS_COLD_START", "dir_data": "ROSE_DATA", @@ -367,7 +369,7 @@ def cmp_suite_conf(self, suite_name, strict_mode=False, debug_mode=False): """ raise NotImplementedError() - def get_cycle_items_globs(self, name, cycle, task_glob=None): + def get_cycle_items_globs(self, name, cycle): """Return a glob to match named items created for a given cycle. E.g.: diff --git a/lib/python/rose/suite_engine_procs/cylc.py b/lib/python/rose/suite_engine_procs/cylc.py index db4f8e9ce1..d749ec26c1 100644 --- a/lib/python/rose/suite_engine_procs/cylc.py +++ b/lib/python/rose/suite_engine_procs/cylc.py @@ -19,7 +19,6 @@ #----------------------------------------------------------------------------- """Logic specific to the Cylc suite engine.""" -from isodatetime.parsers import TimePointParser import filecmp from fnmatch import fnmatch from glob import glob @@ -62,7 +61,10 @@ class CylcProcessor(SuiteEngineProcessor): EVENT_RANKS = {"submit-init": 0, "submit": 1, "fail(submit)": 1, "init": 2, "success": 3, "fail": 3, "fail(%s)": 4} JOB_LOGS_DB = "log/rose-job-logs.db" - JOB_LOG_TAIL_KEYS = {"": "00-script", "out": "01-out", "err": "02-err"} + JOB_LOG_TAIL_KEYS = { + "job": "00-script", + "job.out": "01-out", + "job.err": "02-err"} ORDERS = { "time_desc": "time DESC, task_events.submit_num DESC, name DESC, cycle DESC", @@ -192,7 +194,7 @@ def gcontrol(self, suite_name, host=None, engine_version=None, args=None): self.popen(fmt % (host, suite_name, args_str, os.devnull), env=environ, shell=True) - def get_cycle_items_globs(self, name, cycle, task_globs=None): + def get_cycle_items_globs(self, name, cycle): """Return a glob to match named items created for a given cycle. E.g.: @@ -202,15 +204,8 @@ def get_cycle_items_globs(self, name, cycle, task_globs=None): Return None if named item not supported. """ - if task_globs is None: - task_globs = ["*"] - dict_ = {"datac": "share/data/%(cycle)s", - "work": "work/%(task_glob)s.%(cycle)s"} - globs = [] - for task_glob in task_globs: - glob_ = dict_.get(name) % {"cycle": cycle, "task_glob": task_glob} - globs.append(glob_) - return globs + dict_ = {"datac": "share/data/%(cycle)s", "work": "work/%(cycle)s"} + return [dict_.get(name) % {"cycle": cycle}] def get_suite_dir_rel(self, suite_name, *paths): """Return the relative path to the suite running directory. @@ -629,6 +624,7 @@ def get_task_props_from_env(self): task_id=task_id, task_name=task_name, task_cycle_time=task_cycle_time, + task_log_dir=os.path.dirname(task_log_root), task_log_root=task_log_root, task_is_cold_start=task_is_cold_start, cycling_mode=cycling_mode) @@ -763,40 +759,49 @@ def job_logs_archive(self, suite_name, items): if cycle: cycles.append(cycle) self.job_logs_pull_remote(suite_name, cycles, prune_remote_mode=True) - log_dir = self.get_suite_dir(suite_name, "log") cwd = os.getcwd() - self.fs_util.chdir(log_dir) + self.fs_util.chdir(self.get_suite_dir(suite_name)) try: stmt = ("UPDATE log_files SET path=?, path_in_tar=? " + "WHERE cycle==? AND task==? AND submit_num==? AND key==?") for cycle in cycles: - archive_file_name0 = "job-" + cycle + ".tar" + archive_file_name0 = os.path.join("log", + "job-" + cycle + ".tar") archive_file_name = archive_file_name0 + ".gz" if os.path.exists(archive_file_name): continue - glob_ = self.TASK_ID_DELIM.join(["*", cycle, "*"]) - names = glob(os.path.join("job", glob_)) + glob_ = os.path.join(cycle, "*", "*", "*") + names = glob(os.path.join("log", "job", glob_)) if not names: continue f_bsize = os.statvfs(".").f_bsize tar = tarfile.open(archive_file_name0, "w", bufsize=f_bsize) for name in names: - tar.add(name) + cycle, task, s_n, ext = self._parse_job_log_base_name(name) + if s_n == "NN" or ext == "job.status": + continue + tar.add(name, name.replace("log/", "", 1)) tar.close() # N.B. Python's gzip is slow self.popen.run_simple("gzip", "-f", archive_file_name0) self.handle_event(FileSystemEvent(FileSystemEvent.CREATE, archive_file_name)) - for name in sorted(names): - self.fs_util.delete(name) + self.fs_util.delete(os.path.join("log", "job", cycle)) for name in names: # cycle, task, submit_num, extension cycle, task, s_n, ext = self._parse_job_log_base_name(name) + if s_n == "NN" or ext == "job.status": + continue key = ext if ext in self.JOB_LOG_TAIL_KEYS: key = self.JOB_LOG_TAIL_KEYS[ext] - stmt_args = [os.path.join("log", archive_file_name), - name, cycle, task, s_n, key] + stmt_args = [ + os.path.join(archive_file_name), + name.replace("log/", "", 1), + cycle, + task, + int(s_n), + key] self._db_exec(self.JOB_LOGS_DB, None, suite_name, stmt, stmt_args, commit=True) finally: @@ -842,11 +847,11 @@ def job_logs_pull_remote(self, suite_name, items, prune_remote_mode=False): uuid_file_name = os.path.join(log_dir, uuid) self.fs_util.touch(uuid_file_name) try: - glob_auths_map = {} + auths_filters = [] # [(auths, includes, excludes), ...] if "*" in items: auths = self.get_suite_jobs_auths(suite_name) if auths: - glob_auths_map["*"] = self.get_suite_jobs_auths(suite_name) + auths_filters.append((auths, [], [])) else: for item in items: cycle, name = self._parse_task_cycle_id(item) @@ -856,21 +861,30 @@ def job_logs_pull_remote(self, suite_name, items, prune_remote_mode=False): continue auths = self.get_suite_jobs_auths(suite_name, cycle, name) if auths: - glob_names = [] - for list_ in [name, cycle, None]: - if list_ is None: - glob_names.append("*") - else: - glob_names.append(list_) - glob_ = self.TASK_ID_DELIM.join(glob_names) - glob_auths_map[glob_] = auths - # FIXME: more efficient if auth is key? - for glob_, auths in glob_auths_map.items(): + includes = [] + excludes = [] + if cycle is None and name is None: + includes = [] + excludes = [] + elif name is None: + includes = ["/" + cycle] + excludes = ["/*"] + elif cycle is None: + includes = ["/*/" + name] + excludes = ["/*/*"] + else: + includes = ["/" + cycle, "/" + cycle + "/" + name] + excludes = ["/*", "/*/*"] + auths_filters.append((auths, includes, excludes)) + + for auths, includes, excludes in auths_filters: for auth in auths: data = {"auth": auth, "log_dir_rel": log_dir_rel, "uuid": uuid, - "glob_": glob_} + "glob_": "*"} + if includes: + data["glob_"] = includes[-1][1:] # Remove leading / cmd = self.popen.get_cmd( "ssh", auth, ("cd %(log_dir_rel)s && " + @@ -878,11 +892,15 @@ def job_logs_pull_remote(self, suite_name, items, prune_remote_mode=False): ret_code, ssh_ls_out, _ = self.popen.run(*cmd) if ret_code: continue + cmd_list = ["rsync"] + for include in includes: + cmd_list.append("--include=" + include) + for exclude in excludes: + cmd_list.append("--exclude=" + exclude) + cmd_list.append("%(auth)s:%(log_dir_rel)s/" % data) + cmd_list.append(log_dir) try: - cmd = self.popen.get_cmd( - "rsync", - "%(auth)s:%(log_dir_rel)s/%(glob_)s" % data, - log_dir) + cmd = self.popen.get_cmd(*cmd_list) self.popen(*cmd) except RosePopenError as exc: self.handle_event(exc, level=Reporter.WARN) @@ -891,14 +909,15 @@ def job_logs_pull_remote(self, suite_name, items, prune_remote_mode=False): try: cmd = self.popen.get_cmd( "ssh", auth, - "cd %(log_dir_rel)s && rm -f %(glob_)s" % data) + "cd %(log_dir_rel)s && rm -fr %(glob_)s" % data) self.popen(*cmd) except RosePopenError as exc: self.handle_event(exc, level=Reporter.WARN) else: for line in sorted(ssh_ls_out.splitlines()): - event = FileSystemEvent(FileSystemEvent.DELETE, - auth + ":" + line) + event = FileSystemEvent( + FileSystemEvent.DELETE, + "%s:log/job/%s/" % (auth, line)) self.handle_event(event) finally: self.fs_util.delete(uuid_file_name) @@ -914,19 +933,23 @@ def job_logs_pull_remote(self, suite_name, items, prune_remote_mode=False): if not name: name = "*" logs_prefix = self.get_suite_dir( - suite_name, - "log/job/%s.%s." % (name, cycle)) + suite_name, + "log/job/%(cycle)s/%(name)s/*/*" % { + "cycle": cycle, "name": name}) for f_name in glob(logs_prefix + "*"): - if f_name.endswith(".status"): + if f_name.endswith("/job.status"): continue stat = os.stat(f_name) rel_f_name = f_name[len(dir_) + 1:] # cycle, task, submit_num, extension - cycle, task, s_n, ext = self._parse_job_log_base_name(f_name) + cycle, task, s_n, ext = self._parse_job_log_base_name( + rel_f_name) + if s_n == "NN": + continue key = ext if ext in self.JOB_LOG_TAIL_KEYS: key = self.JOB_LOG_TAIL_KEYS[ext] - stmt_args = [cycle, task, s_n, key, rel_f_name, "", + stmt_args = [cycle, task, int(s_n), key, rel_f_name, "", stat.st_mtime, stat.st_size] dao.execute(stmt, stmt_args) dao.commit() @@ -1133,14 +1156,10 @@ def _db_init(self, db_name, user_name, suite_name): self.daos[db_name][key] = DAO(db_f_name) return self.daos[db_name][key] - def _parse_job_log_base_name(self, f_name): + @classmethod + def _parse_job_log_base_name(cls, f_name): """Return (cycle, task, submit_num, ext).""" - b_names = os.path.basename(f_name).split(self.TASK_ID_DELIM, 3) - task, cycle, submit_num = b_names[0:3] - ext = "" - if len(b_names) > 3: - ext = b_names[3] - return (cycle, task, submit_num, ext) + return f_name.replace("log/job/", "").split("/", 3) def _parse_task_cycle_id(self, item): """Parse name.cycle. Return (cycle, name).""" diff --git a/t/rose-stem/00-run-basic.t b/t/rose-stem/00-run-basic.t index deada76b37..13b458a4fc 100755 --- a/t/rose-stem/00-run-basic.t +++ b/t/rose-stem/00-run-basic.t @@ -59,7 +59,7 @@ run_pass "$TEST_KEY" \ --source=$WORKINGCOPY --source=fcm:foo_tr@head --no-gcontrol \ --name $SUITENAME -- --debug #Test output -OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/my_task_1.1.1.out +OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/1/my_task_1/01/job.out TEST_KEY=$TEST_KEY_BASE-basic-groups-to-run file_grep $TEST_KEY "RUN_NAMES=\[earl_grey, milk, sugar, spoon, cup, milk\]" \ $OUTPUT @@ -76,7 +76,7 @@ run_pass "$TEST_KEY" \ rose stem --group=lapsang -C $WORKINGCOPY/rose-stem --source=fcm:foo_tr@head\ --no-gcontrol --name $SUITENAME -- --debug #Test output -OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/my_task_1.1.1.out +OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/1/my_task_1/01/job.out TEST_KEY=$TEST_KEY_BASE-suite-redirection-groups-to-run file_grep $TEST_KEY "RUN_NAMES=\[lapsang\]" $OUTPUT TEST_KEY=$TEST_KEY_BASE-suite-redirection-source @@ -92,7 +92,7 @@ run_pass "$TEST_KEY" \ rose stem --group=assam --source=$WORKINGCOPY/rose-stem --no-gcontrol \ --name $SUITENAME -- --debug #Test output -OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/my_task_1.1.1.out +OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/1/my_task_1/01/job.out TEST_KEY=$TEST_KEY_BASE-subdirectory-groups-to-run file_grep $TEST_KEY "RUN_NAMES=\[assam\]" $OUTPUT TEST_KEY=$TEST_KEY_BASE-subdirectory-source @@ -109,7 +109,7 @@ run_pass "$TEST_KEY" \ rose stem --group=ceylon -C rose-stem \ --no-gcontrol --name $SUITENAME -- --debug #Test output -OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/my_task_1.1.1.out +OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/1/my_task_1/01/job.out TEST_KEY=$TEST_KEY_BASE-relative-path-groups-to-run file_grep $TEST_KEY "RUN_NAMES=\[ceylon\]" $OUTPUT TEST_KEY=$TEST_KEY_BASE-relative-path-source @@ -135,7 +135,7 @@ run_pass "$TEST_KEY" \ --source=$WORKINGCOPY --source=fcm:foo_tr@head --no-gcontrol \ --name $SUITENAME -- --debug #Test output -OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/my_task_1.1.1.out +OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/1/my_task_1/01/job.out TEST_KEY=$TEST_KEY_BASE-check-with-config-groups-to-run file_grep $TEST_KEY "RUN_NAMES=\[earl_grey, milk, sugar, spoon, cup, milk\]" \ $OUTPUT @@ -159,7 +159,7 @@ run_pass "$TEST_KEY" \ rose stem --group=assam --source=$WORKINGCOPY/rose-stem --no-gcontrol \ --name $SUITENAME -- --debug #Test output -OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/my_task_1.1.1.out +OUTPUT=$HOME/cylc-run/$SUITENAME/log/job/1/my_task_1/01/job.out TEST_KEY=$TEST_KEY_BASE-multi-auto-config-first file_grep $TEST_KEY "MILK=true\$" $OUTPUT TEST_KEY=$TEST_KEY_BASE-multi-auto-config-second diff --git a/t/rose-suite-clean/01-running.t b/t/rose-suite-clean/01-running.t index f97b16b715..7fd529a31f 100755 --- a/t/rose-suite-clean/01-running.t +++ b/t/rose-suite-clean/01-running.t @@ -33,7 +33,7 @@ NAME=$(basename $SUITE_RUN_DIR) rose suite-run --debug -q \ -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME --no-gcontrol ls -ld $HOME/cylc-run/$NAME 1>/dev/null -poll ! test -e $SUITE_RUN_DIR/log/job/my_task_1.2013010100.1 +poll ! test -e $SUITE_RUN_DIR/log/job/2013010100/my_task_1/01/job SUITE_PROC=$(pgrep -u$USER -fl "python.*cylc-run.*\\<$NAME\\>" \ | awk '{print "[FAIL] " $0}') #------------------------------------------------------------------------------- diff --git a/t/rose-suite-hook/01-job-host.t b/t/rose-suite-hook/01-job-host.t index 947664d6e4..17cf8ca747 100755 --- a/t/rose-suite-hook/01-job-host.t +++ b/t/rose-suite-hook/01-job-host.t @@ -32,37 +32,22 @@ fi HOST=$(rose host-select $HOST) export ROSE_CONF_PATH= #------------------------------------------------------------------------------- -tests 5 +tests 3 #------------------------------------------------------------------------------- # Run the suite. TEST_KEY=$TEST_KEY_BASE SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) -run_pass "$TEST_KEY" \ - rose suite-run -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ +rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ --no-gcontrol --host=localhost \ - "--define=[jinja2:suite.rc]HOST=\"$HOST\"" -#------------------------------------------------------------------------------- -# Wait for the suite to complete -TEST_KEY=$TEST_KEY_BASE-suite-run-ok -TIMEOUT=$(($(date +%s) + 300)) # wait 5 minutes -while [[ -e $HOME/.cylc/ports/$NAME ]] && (($(date +%s) < TIMEOUT)); do - sleep 1 -done -if [[ -e $HOME/.cylc/ports/$NAME ]]; then - fail "$TEST_KEY" - exit 1 -else - pass "$TEST_KEY" -fi -sleep 1 + "--define=[jinja2:suite.rc]HOST=\"$HOST\"" -- --debug #------------------------------------------------------------------------------- # Test for local copy of remote job logs. TEST_KEY=$TEST_KEY_BASE-log cd $SUITE_RUN_DIR/log/job -file_test "$TEST_KEY-my_task_1.out" "my_task_1.1.1.out" -file_test "$TEST_KEY-my_task_1.err" "my_task_1.1.1.txt" -file_cmp "$TEST_KEY-my_task_1.txt" "my_task_1.1.1.txt" <<'__CONTENT__' +file_test "$TEST_KEY-my_task_1-out" "1/my_task_1/01/job.out" +file_test "$TEST_KEY-my_task_1-err" "1/my_task_1/01/job.err" +file_cmp "$TEST_KEY-my_task_1.txt" "1/my_task_1/01/job.txt" <<'__CONTENT__' Hello World __CONTENT__ cd $OLDPWD diff --git a/t/rose-suite-log/00-update-task.t b/t/rose-suite-log/00-update-task.t index 06d14bb9c3..695b6bb86c 100755 --- a/t/rose-suite-log/00-update-task.t +++ b/t/rose-suite-log/00-update-task.t @@ -29,7 +29,7 @@ if [[ $TEST_KEY_BASE == *-remote* ]]; then JOB_HOST=$(rose host-select $JOB_HOST) fi #------------------------------------------------------------------------------- -tests 8 +tests 6 #------------------------------------------------------------------------------- # Run the suite. export ROSE_CONF_PATH= @@ -37,59 +37,43 @@ TEST_KEY=$TEST_KEY_BASE SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) if [[ -n ${JOB_HOST:-} ]]; then - run_pass "$TEST_KEY" \ - rose suite-run -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ + rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ --no-gcontrol --host=localhost \ - -D "[jinja2:suite.rc]HOST=\"$JOB_HOST\"" + -D "[jinja2:suite.rc]HOST=\"$JOB_HOST\"" -- --debug else - run_pass "$TEST_KEY" \ - rose suite-run -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ - --no-gcontrol --host=localhost + rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ + --no-gcontrol --host=localhost -- --debug fi #------------------------------------------------------------------------------- -# Wait for the suite to complete, test shutdown on fail -TEST_KEY="$TEST_KEY_BASE-complete" -TIMEOUT=$(($(date +%s) + 300)) # wait 5 minutes -while [[ -e $HOME/.cylc/ports/$NAME ]] && (($(date +%s) < TIMEOUT)); do - sleep 1 -done -if [[ -e $HOME/.cylc/ports/$NAME ]]; then - fail "$TEST_KEY" - exit 1 -else - pass "$TEST_KEY" -fi -sleep 1 -#------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE-db-before" sqlite3 "$HOME/cylc-run/$NAME/log/rose-job-logs.db" \ 'SELECT path,key FROM log_files ORDER BY path ASC;' >"$TEST_KEY.out" file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<'__OUT__' -log/job/my_task_1.1.1|00-script -log/job/my_task_1.1.1.err|02-err -log/job/my_task_1.1.1.out|01-out +log/job/1/my_task_1/01/job|00-script +log/job/1/my_task_1/01/job.err|02-err +log/job/1/my_task_1/01/job.out|01-out __OUT__ TEST_KEY=$TEST_KEY_BASE-before-log.out if [[ -n ${JOB_HOST:-} ]]; then run_fail "$TEST_KEY-log.out" \ - test -f $SUITE_RUN_DIR/log/job/my_task_2.1.1.out + test -f $SUITE_RUN_DIR/log/job/1/my_task_2/01/job.out else pass "$TEST_KEY-log.out" fi TEST_KEY=$TEST_KEY_BASE-command run_pass "$TEST_KEY" rose suite-log -n $NAME -U 'my_task_2' --debug file_cmp "$TEST_KEY.err" "$TEST_KEY.err" "$TEST_KEY.out" file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<'__OUT__' -log/job/my_task_1.1.1|00-script -log/job/my_task_1.1.1.err|02-err -log/job/my_task_1.1.1.out|01-out -log/job/my_task_2.1.1|00-script -log/job/my_task_2.1.1.err|02-err -log/job/my_task_2.1.1.out|01-out +log/job/1/my_task_1/01/job|00-script +log/job/1/my_task_1/01/job.err|02-err +log/job/1/my_task_1/01/job.out|01-out +log/job/1/my_task_2/01/job|00-script +log/job/1/my_task_2/01/job.err|02-err +log/job/1/my_task_2/01/job.out|01-out __OUT__ #------------------------------------------------------------------------------- rose suite-clean -q -y $NAME diff --git a/t/rose-suite-log/00-update-task/suite.rc b/t/rose-suite-log/00-update-task/suite.rc index 2adeff51a9..d27851b95f 100644 --- a/t/rose-suite-log/00-update-task/suite.rc +++ b/t/rose-suite-log/00-update-task/suite.rc @@ -2,7 +2,7 @@ [cylc] UTC mode = True [[event hooks]] - timeout handler = "rose suite-hook --shutdown" + timeout handler = rose suite-hook --shutdown timeout = 1 [scheduling] [[dependencies]] @@ -13,19 +13,19 @@ my_task_2 [runtime] [[root]] - command scripting = "echo Hello" + command scripting = echo Hello [[[event hooks]]] - failed handler = "rose suite-hook --shutdown" - submission failed handler = "rose suite-hook --shutdown" - submission timeout handler = "rose suite-hook" - execution timeout handler = "rose suite-hook" + failed handler = rose suite-hook --shutdown + submission failed handler = rose suite-hook --shutdown + submission timeout handler = rose suite-hook + execution timeout handler = rose suite-hook submission timeout = 1 - execution timeout = 1 + execution timeout = 1 {% if HOST is defined %} [[[remote]]] host = {{HOST}} {% endif %} [[my_task_1]] [[[event hooks]]] - succeeded handler = "rose suite-hook" + succeeded handler = rose suite-hook [[my_task_2]] diff --git a/t/rose-suite-log/01-update-cycle.t b/t/rose-suite-log/01-update-cycle.t index d26f0b6893..f2c05cabe8 100755 --- a/t/rose-suite-log/01-update-cycle.t +++ b/t/rose-suite-log/01-update-cycle.t @@ -66,43 +66,43 @@ sleep 1 # Test --archive. CYCLE=2013010100 TEST_KEY="$TEST_KEY_BASE-archive-$CYCLE" -set -e -ls $SUITE_RUN_DIR/log/job/*$CYCLE* >"$TEST_KEY-list-job-logs-before.out" +(cd $SUITE_RUN_DIR/log; ls job/$CYCLE/*/01/{job,job.err,job.out}) \ + >"$TEST_KEY-list-job-logs-before.out" if [[ -n ${JOB_HOST:-} ]]; then ssh -oBatchMode=yes $JOB_HOST \ - test -f cylc-run/$NAME/log/job/my_task_2.$CYCLE.1.out - ! test -f $SUITE_RUN_DIR/log/job/my_task_2.$CYCLE.1.out + test -f cylc-run/$NAME/log/job/$CYCLE/my_task_2/01/job.out + ! test -f $SUITE_RUN_DIR/log/job/$CYCLE/my_task_2/01/job.out fi -set +e sqlite3 "$HOME/cylc-run/$NAME/log/rose-job-logs.db" \ 'SELECT path,path_in_tar,key FROM log_files ORDER BY path,path_in_tar ASC;' \ >"$TEST_KEY-db-1.out" file_cmp "$TEST_KEY-db-1.out" "$TEST_KEY-db-1.out" <<'__OUT__' -log/job/my_task_1.2013010100.1||00-script -log/job/my_task_1.2013010100.1.err||02-err -log/job/my_task_1.2013010100.1.out||01-out -log/job/my_task_1.2013010112.1||00-script -log/job/my_task_1.2013010112.1.err||02-err -log/job/my_task_1.2013010112.1.out||01-out -log/job/my_task_1.2013010200.1||00-script -log/job/my_task_1.2013010200.1.err||02-err -log/job/my_task_1.2013010200.1.out||01-out +log/job/2013010100/my_task_1/01/job||00-script +log/job/2013010100/my_task_1/01/job.err||02-err +log/job/2013010100/my_task_1/01/job.out||01-out +log/job/2013010112/my_task_1/01/job||00-script +log/job/2013010112/my_task_1/01/job.err||02-err +log/job/2013010112/my_task_1/01/job.out||01-out +log/job/2013010200/my_task_1/01/job||00-script +log/job/2013010200/my_task_1/01/job.err||02-err +log/job/2013010200/my_task_1/01/job.out||01-out __OUT__ +# N_JOB_LOGS should be 4, my_task_1 script, err, out and my_task_2 script N_JOB_LOGS=$(wc -l "$TEST_KEY-list-job-logs-before.out" | cut -d' ' -f1) run_pass "$TEST_KEY-command" rose suite-log -n $NAME --archive $CYCLE --debug -run_fail "$TEST_KEY-list-job-logs-after" ls $SUITE_RUN_DIR/log/job/*$CYCLE* +run_fail "$TEST_KEY-list-job-logs-after" ls $SUITE_RUN_DIR/log/job/$CYCLE/* if [[ -n ${JOB_HOST:-} ]]; then - ((N_JOB_LOGS += 3)) # script, out and err files + ((N_JOB_LOGS += 2)) # my_task_2 out and err run_fail "$TEST_KEY-job-log.out-after-jobhost" \ ssh -oBatchMode=yes $JOB_HOST \ - test -f cylc-run/$NAME/log/job/my_task_2.$CYCLE.1.out + test -f cylc-run/$NAME/log/job/$CYCLE/my_task_2/01/job.out else pass "$TEST_KEY-job-log.out-after-jobhost" fi file_test "$TEST_KEY-tar-exist" $SUITE_RUN_DIR/log/job-$CYCLE.tar.gz JOB_LOGS_ARCH=$(tar -tzf $SUITE_RUN_DIR/log/job-$CYCLE.tar.gz) run_pass "$TEST_KEY-after-log.out" \ - grep -q "job/my_task_2.$CYCLE.1.out" <<<"$JOB_LOGS_ARCH" + grep -q "job/$CYCLE/my_task_2/../job.out" <<<"$JOB_LOGS_ARCH" N_JOB_LOGS_ARCH=$(echo "$JOB_LOGS_ARCH" | wc -l | cut -d' ' -f1) if ((N_JOB_LOGS == N_JOB_LOGS_ARCH)); then pass "$TEST_KEY-n-arch" @@ -114,18 +114,18 @@ sqlite3 "$HOME/cylc-run/$NAME/log/rose-job-logs.db" \ 'SELECT path,path_in_tar,key FROM log_files ORDER BY path,path_in_tar ASC;' \ >"$TEST_KEY-db-2.out" file_cmp "$TEST_KEY-db-2.out" "$TEST_KEY-db-2.out" <<'__OUT__' -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1|00-script -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1.err|02-err -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1.out|01-out -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1|00-script -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1.err|02-err -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1.out|01-out -log/job/my_task_1.2013010112.1||00-script -log/job/my_task_1.2013010112.1.err||02-err -log/job/my_task_1.2013010112.1.out||01-out -log/job/my_task_1.2013010200.1||00-script -log/job/my_task_1.2013010200.1.err||02-err -log/job/my_task_1.2013010200.1.out||01-out +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job|00-script +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job.err|02-err +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job.out|01-out +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job|00-script +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job.err|02-err +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job.out|01-out +log/job/2013010112/my_task_1/01/job||00-script +log/job/2013010112/my_task_1/01/job.err||02-err +log/job/2013010112/my_task_1/01/job.out||01-out +log/job/2013010200/my_task_1/01/job||00-script +log/job/2013010200/my_task_1/01/job.err||02-err +log/job/2013010200/my_task_1/01/job.out||01-out __OUT__ #------------------------------------------------------------------------------- # Test --update. @@ -134,30 +134,30 @@ for CYCLE in 2013010112 2013010200; do run_pass "$TEST_KEY-command" rose suite-log -n $NAME --update $CYCLE --debug file_cmp "$TEST_KEY-command.err" "$TEST_KEY-command.err" "$TEST_KEY_BASE-db-final.out" file_cmp "$TEST_KEY_BASE-db-final.out" "$TEST_KEY_BASE-db-final.out" <<'__OUT__' -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1|00-script -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1.err|02-err -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1.out|01-out -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1|00-script -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1.err|02-err -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1.out|01-out -log/job/my_task_1.2013010112.1||00-script -log/job/my_task_1.2013010112.1.err||02-err -log/job/my_task_1.2013010112.1.out||01-out -log/job/my_task_1.2013010200.1||00-script -log/job/my_task_1.2013010200.1.err||02-err -log/job/my_task_1.2013010200.1.out||01-out -log/job/my_task_2.2013010112.1||00-script -log/job/my_task_2.2013010112.1.err||02-err -log/job/my_task_2.2013010112.1.out||01-out -log/job/my_task_2.2013010200.1||00-script -log/job/my_task_2.2013010200.1.err||02-err -log/job/my_task_2.2013010200.1.out||01-out +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job|00-script +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job.err|02-err +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job.out|01-out +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job|00-script +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job.err|02-err +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job.out|01-out +log/job/2013010112/my_task_1/01/job||00-script +log/job/2013010112/my_task_1/01/job.err||02-err +log/job/2013010112/my_task_1/01/job.out||01-out +log/job/2013010112/my_task_2/01/job||00-script +log/job/2013010112/my_task_2/01/job.err||02-err +log/job/2013010112/my_task_2/01/job.out||01-out +log/job/2013010200/my_task_1/01/job||00-script +log/job/2013010200/my_task_1/01/job.err||02-err +log/job/2013010200/my_task_1/01/job.out||01-out +log/job/2013010200/my_task_2/01/job||00-script +log/job/2013010200/my_task_2/01/job.err||02-err +log/job/2013010200/my_task_2/01/job.out||01-out __OUT__ #------------------------------------------------------------------------------- rose suite-clean -q -y $NAME diff --git a/t/rose-suite-log/01-update-cycle/suite.rc b/t/rose-suite-log/01-update-cycle/suite.rc index 99fd5182fd..e03e781a61 100644 --- a/t/rose-suite-log/01-update-cycle/suite.rc +++ b/t/rose-suite-log/01-update-cycle/suite.rc @@ -2,7 +2,7 @@ [cylc] UTC mode = True [[event hooks]] - timeout handler = "rose suite-hook --shutdown" + timeout handler = rose suite-hook --shutdown timeout = 1 [scheduling] initial cycle point = 2013010100 @@ -16,19 +16,19 @@ my_task_2 [runtime] [[root]] - command scripting = "echo Hello" + command scripting = echo Hello [[[event hooks]]] - failed handler = "rose suite-hook --shutdown" - submission failed handler = "rose suite-hook --shutdown" - submission timeout handler = "rose suite-hook" - execution timeout handler = "rose suite-hook" + failed handler = rose suite-hook --shutdown + submission failed handler = rose suite-hook --shutdown + submission timeout handler = rose suite-hook + execution timeout handler = rose suite-hook submission timeout = 1 - execution timeout = 1 + execution timeout = 1 {% if HOST is defined %} [[[remote]]] host = {{HOST}} {% endif %} [[my_task_1]] [[[event hooks]]] - succeeded handler = "rose suite-hook" + succeeded handler = rose suite-hook [[my_task_2]] diff --git a/t/rose-suite-log/02-update-force.t b/t/rose-suite-log/02-update-force.t index ee04996b44..be859addb3 100755 --- a/t/rose-suite-log/02-update-force.t +++ b/t/rose-suite-log/02-update-force.t @@ -79,32 +79,32 @@ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" "$TEST_KEY.out" file_cmp "$TEST_KEY.out" "$TEST_KEY.out" <<'__OUT__' -log/job/my_task_1.2013010100.1|00-script -log/job/my_task_1.2013010100.1.err|02-err -log/job/my_task_1.2013010100.1.out|01-out -log/job/my_task_1.2013010112.1|00-script -log/job/my_task_1.2013010112.1.err|02-err -log/job/my_task_1.2013010112.1.out|01-out -log/job/my_task_1.2013010200.1|00-script -log/job/my_task_1.2013010200.1.err|02-err -log/job/my_task_1.2013010200.1.out|01-out -log/job/my_task_2.2013010100.1|00-script -log/job/my_task_2.2013010100.1.err|02-err -log/job/my_task_2.2013010100.1.out|01-out -log/job/my_task_2.2013010112.1|00-script -log/job/my_task_2.2013010112.1.err|02-err -log/job/my_task_2.2013010112.1.out|01-out -log/job/my_task_2.2013010200.1|00-script -log/job/my_task_2.2013010200.1.err|02-err -log/job/my_task_2.2013010200.1.out|01-out +log/job/2013010100/my_task_1/01/job|00-script +log/job/2013010100/my_task_1/01/job.err|02-err +log/job/2013010100/my_task_1/01/job.out|01-out +log/job/2013010100/my_task_2/01/job|00-script +log/job/2013010100/my_task_2/01/job.err|02-err +log/job/2013010100/my_task_2/01/job.out|01-out +log/job/2013010112/my_task_1/01/job|00-script +log/job/2013010112/my_task_1/01/job.err|02-err +log/job/2013010112/my_task_1/01/job.out|01-out +log/job/2013010112/my_task_2/01/job|00-script +log/job/2013010112/my_task_2/01/job.err|02-err +log/job/2013010112/my_task_2/01/job.out|01-out +log/job/2013010200/my_task_1/01/job|00-script +log/job/2013010200/my_task_1/01/job.err|02-err +log/job/2013010200/my_task_1/01/job.out|01-out +log/job/2013010200/my_task_2/01/job|00-script +log/job/2013010200/my_task_2/01/job.err|02-err +log/job/2013010200/my_task_2/01/job.out|01-out __OUT__ #------------------------------------------------------------------------------- # Test --prune-remote. @@ -114,35 +114,12 @@ if [[ -n ${JOB_HOST:-} ]]; then rose suite-log -U -n $NAME --prune-remote 2013010100 2013010112 grep "\[INFO\] delete: $JOB_HOST:" "$TEST_KEY.out" >"$TEST_KEY.out.expected" file_cmp "$TEST_KEY.out" "$TEST_KEY.out.expected" <<__OUT__ -[INFO] delete: $JOB_HOST:my_task_1.2013010100.1 -[INFO] delete: $JOB_HOST:my_task_1.2013010100.1.err -[INFO] delete: $JOB_HOST:my_task_1.2013010100.1.out -[INFO] delete: $JOB_HOST:my_task_1.2013010100.1.status -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1 -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1.err -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1.out -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1.status -[INFO] delete: $JOB_HOST:my_task_1.2013010112.1 -[INFO] delete: $JOB_HOST:my_task_1.2013010112.1.err -[INFO] delete: $JOB_HOST:my_task_1.2013010112.1.out -[INFO] delete: $JOB_HOST:my_task_1.2013010112.1.status -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1 -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1.err -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1.out -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1.status +[INFO] delete: $JOB_HOST:log/job/2013010100/ +[INFO] delete: $JOB_HOST:log/job/2013010112/ __OUT__ ssh -oBatchMode=yes $JOB_HOST ls "~/cylc-run/$NAME/log/job" \ | sort >"$TEST_KEY.ls" - file_cmp "$TEST_KEY.ls" "$TEST_KEY.ls" <<'__LIST__' -my_task_1.2013010200.1 -my_task_1.2013010200.1.err -my_task_1.2013010200.1.out -my_task_1.2013010200.1.status -my_task_2.2013010200.1 -my_task_2.2013010200.1.err -my_task_2.2013010200.1.out -my_task_2.2013010200.1.status -__LIST__ + file_cmp "$TEST_KEY.ls" "$TEST_KEY.ls" <<<'2013010200' else skip 3 "$TEST_KEY: [t]job-host not defined" fi diff --git a/t/rose-suite-log/06-archive-star.t b/t/rose-suite-log/06-archive-star.t index 83566cfbdb..6153807e24 100644 --- a/t/rose-suite-log/06-archive-star.t +++ b/t/rose-suite-log/06-archive-star.t @@ -65,11 +65,12 @@ fi TEST_KEY="$TEST_KEY_BASE" set -e -ls $SUITE_RUN_DIR/log/job/* >"$TEST_KEY-list-job-logs-before.out" +(cd $SUITE_RUN_DIR/log/job; ls */*/01/{job,job.err,job.out}) \ + >"$TEST_KEY-list-job-logs-before.out" if [[ -n ${JOB_HOST:-} ]]; then ssh -oBatchMode=yes $JOB_HOST \ - test -f cylc-run/$NAME/log/job/my_task_2.*.1.out - ! test -f $SUITE_RUN_DIR/log/job/my_task_2.*.1.out + test -f cylc-run/$NAME/log/job/*/my_task_2/01/job.out + ! test -f $SUITE_RUN_DIR/log/job/*/my_task_2/01/job.out fi set +e @@ -77,25 +78,25 @@ sqlite3 "$HOME/cylc-run/$NAME/log/rose-job-logs.db" \ 'SELECT path,path_in_tar,key FROM log_files ORDER BY path,path_in_tar ASC;' \ >"$TEST_KEY-db-1.out" file_cmp "$TEST_KEY-db-1.out" "$TEST_KEY-db-1.out" <<'__OUT__' -log/job/my_task_1.2013010100.1||00-script -log/job/my_task_1.2013010100.1.err||02-err -log/job/my_task_1.2013010100.1.out||01-out -log/job/my_task_1.2013010112.1||00-script -log/job/my_task_1.2013010112.1.err||02-err -log/job/my_task_1.2013010112.1.out||01-out -log/job/my_task_1.2013010200.1||00-script -log/job/my_task_1.2013010200.1.err||02-err -log/job/my_task_1.2013010200.1.out||01-out +log/job/2013010100/my_task_1/01/job||00-script +log/job/2013010100/my_task_1/01/job.err||02-err +log/job/2013010100/my_task_1/01/job.out||01-out +log/job/2013010112/my_task_1/01/job||00-script +log/job/2013010112/my_task_1/01/job.err||02-err +log/job/2013010112/my_task_1/01/job.out||01-out +log/job/2013010200/my_task_1/01/job||00-script +log/job/2013010200/my_task_1/01/job.err||02-err +log/job/2013010200/my_task_1/01/job.out||01-out __OUT__ N_JOB_LOGS=$(wc -l "$TEST_KEY-list-job-logs-before.out" | cut -d' ' -f1) (cd $SUITE_RUN_DIR/log && ls job/*) | sort >foo run_pass "$TEST_KEY-command" rose suite-log -n $NAME --archive '*' --debug run_fail "$TEST_KEY-list-job-logs-after" ls $SUITE_RUN_DIR/log/job/* if [[ -n ${JOB_HOST:-} ]]; then - ((N_JOB_LOGS += 3)) # script, out and err files + ((N_JOB_LOGS += 2)) # script, out and err files run_fail "$TEST_KEY-job-log.out-after-jobhost" \ ssh -oBatchMode=yes $JOB_HOST \ - test -f cylc-run/$NAME/log/job/my_task_2.*.1.out + test -f cylc-run/$NAME/log/job/*/my_task_2/01/job.out else pass "$TEST_KEY-job-log.out-after-jobhost" fi @@ -113,7 +114,7 @@ __LIST__ ALL_JOB_LOGS_ARCH="$JOB_LOGS_ARCH" fi run_pass "$TEST_KEY-$CYCLE-after-log.out" \ - grep -q "job/my_task_2.$CYCLE.1.out" <<<"$JOB_LOGS_ARCH" + grep -q "job/$CYCLE/my_task_2/01/job.out" <<<"$JOB_LOGS_ARCH" done N_JOB_LOGS_ARCH=$(echo "$ALL_JOB_LOGS_ARCH" | wc -l | cut -d' ' -f1) echo "$ALL_JOB_LOGS_ARCH" | sort >bar @@ -128,24 +129,24 @@ sqlite3 "$HOME/cylc-run/$NAME/log/rose-job-logs.db" \ 'SELECT path,path_in_tar,key FROM log_files ORDER BY path,path_in_tar ASC;' \ >"$TEST_KEY-db-2.out" file_cmp "$TEST_KEY-db-2.out" "$TEST_KEY-db-2.out" <<'__OUT__' -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1|00-script -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1.err|02-err -log/job-2013010100.tar.gz|job/my_task_1.2013010100.1.out|01-out -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1|00-script -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1.err|02-err -log/job-2013010100.tar.gz|job/my_task_2.2013010100.1.out|01-out -log/job-2013010112.tar.gz|job/my_task_1.2013010112.1|00-script -log/job-2013010112.tar.gz|job/my_task_1.2013010112.1.err|02-err -log/job-2013010112.tar.gz|job/my_task_1.2013010112.1.out|01-out -log/job-2013010112.tar.gz|job/my_task_2.2013010112.1|00-script -log/job-2013010112.tar.gz|job/my_task_2.2013010112.1.err|02-err -log/job-2013010112.tar.gz|job/my_task_2.2013010112.1.out|01-out -log/job-2013010200.tar.gz|job/my_task_1.2013010200.1|00-script -log/job-2013010200.tar.gz|job/my_task_1.2013010200.1.err|02-err -log/job-2013010200.tar.gz|job/my_task_1.2013010200.1.out|01-out -log/job-2013010200.tar.gz|job/my_task_2.2013010200.1|00-script -log/job-2013010200.tar.gz|job/my_task_2.2013010200.1.err|02-err -log/job-2013010200.tar.gz|job/my_task_2.2013010200.1.out|01-out +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job|00-script +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job.err|02-err +log/job-2013010100.tar.gz|job/2013010100/my_task_1/01/job.out|01-out +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job|00-script +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job.err|02-err +log/job-2013010100.tar.gz|job/2013010100/my_task_2/01/job.out|01-out +log/job-2013010112.tar.gz|job/2013010112/my_task_1/01/job|00-script +log/job-2013010112.tar.gz|job/2013010112/my_task_1/01/job.err|02-err +log/job-2013010112.tar.gz|job/2013010112/my_task_1/01/job.out|01-out +log/job-2013010112.tar.gz|job/2013010112/my_task_2/01/job|00-script +log/job-2013010112.tar.gz|job/2013010112/my_task_2/01/job.err|02-err +log/job-2013010112.tar.gz|job/2013010112/my_task_2/01/job.out|01-out +log/job-2013010200.tar.gz|job/2013010200/my_task_1/01/job|00-script +log/job-2013010200.tar.gz|job/2013010200/my_task_1/01/job.err|02-err +log/job-2013010200.tar.gz|job/2013010200/my_task_1/01/job.out|01-out +log/job-2013010200.tar.gz|job/2013010200/my_task_2/01/job|00-script +log/job-2013010200.tar.gz|job/2013010200/my_task_2/01/job.err|02-err +log/job-2013010200.tar.gz|job/2013010200/my_task_2/01/job.out|01-out __OUT__ #------------------------------------------------------------------------------- rose suite-clean -q -y $NAME diff --git a/t/rose-suite-run/00-run-basic.t b/t/rose-suite-run/00-run-basic.t index b0cb7c932a..50e53827c4 100755 --- a/t/rose-suite-run/00-run-basic.t +++ b/t/rose-suite-run/00-run-basic.t @@ -66,7 +66,7 @@ done TIMEOUT=$(($(date +%s) + 60)) # wait 1 minute while (($(date +%s) < TIMEOUT)) && ! ( cd $SUITE_RUN_DIR/log/job/ - test -f my_task_1.2013010100.1.out && test -f my_task_1.2013010112.1.out + test -f 2013010100/my_task_1/01/job.out && test -f 2013010112/my_task_1/01/job.out ) do sleep 1 diff --git a/t/rose-suite-run/06-opt-conf.t b/t/rose-suite-run/06-opt-conf.t index 7153fabd56..6406761ac2 100755 --- a/t/rose-suite-run/06-opt-conf.t +++ b/t/rose-suite-run/06-opt-conf.t @@ -63,7 +63,7 @@ while read OPT_KEY SUITE_RUN_DIR; do fi VALUE=$(rose config -f $CONF 'jinja2:suite.rc' 'WORLD') TEST_KEY=$TEST_KEY_BASE-$OPT_KEY-txt - file_cmp "$TEST_KEY" $SUITE_RUN_DIR/log/job/my_task_1.1.1.txt <<__OUT__ + file_cmp "$TEST_KEY" $SUITE_RUN_DIR/log/job/1/my_task_1/01/job.txt <<__OUT__ Hello $VALUE __OUT__ fi diff --git a/t/rose-suite-run/08-pgrep.t b/t/rose-suite-run/08-pgrep.t index 3b4e46c0e0..bf24b3d4c8 100755 --- a/t/rose-suite-run/08-pgrep.t +++ b/t/rose-suite-run/08-pgrep.t @@ -44,7 +44,7 @@ NAME=$(basename $SUITE_RUN_DIR) rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME $OPT_HOST \ --no-gcontrol TIME_OUT=$(($(date +%s) + 120)) -GREP="grep -q CYLC_JOB_EXIT= ~/cylc-run/$NAME/log/job/my_task_1.1.1.status" +GREP="grep -q CYLC_JOB_EXIT= ~/cylc-run/$NAME/log/job/1/my_task_1/01/job.status" if [[ -n $HOST ]]; then CMD_PREFIX="ssh -oBatchMode=yes $HOST" else diff --git a/t/rose-suite-run/13-ignore-cylc-version.t b/t/rose-suite-run/13-ignore-cylc-version.t index ca2ad95f96..74215c721b 100755 --- a/t/rose-suite-run/13-ignore-cylc-version.t +++ b/t/rose-suite-run/13-ignore-cylc-version.t @@ -29,7 +29,7 @@ SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) rose suite-run -q -n $NAME --no-gcontrol # Wait for the only task to fail, before reload -ST_FILE=$SUITE_RUN_DIR/log/job/t1.1.1.status +ST_FILE=$SUITE_RUN_DIR/log/job/1/t1/01/job.status TIMEOUT=$(($(date +%s) + 60)) # wait 1 minute while (($(date +%s) < TIMEOUT)) \ && ! grep -q 'CYLC_JOB_EXIT_TIME=' $ST_FILE 2>/dev/null diff --git a/t/rose-suite-run/14-reload-null.t b/t/rose-suite-run/14-reload-null.t index 6deead89a0..20249ae814 100755 --- a/t/rose-suite-run/14-reload-null.t +++ b/t/rose-suite-run/14-reload-null.t @@ -27,7 +27,7 @@ mkdir -p $HOME/cylc-run SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) rose suite-run -q -n $NAME --no-gcontrol -C src -poll ! test -e "$SUITE_RUN_DIR/log/job/t1.2013010100.1.status" +poll ! test -e "$SUITE_RUN_DIR/log/job/2013010100/t1/01/job.status" #------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE-0" run_pass "$TEST_KEY" rose suite-run --run=reload -n $NAME --no-gcontrol -C src @@ -54,10 +54,10 @@ __OUT__ file_cmp "$TEST_KEY.err" "$TEST_KEY.err" /dev/null # Wait for the suite to complete poll test -e "$HOME/.cylc/ports/$NAME" -grep '^hello ' $SUITE_RUN_DIR/log/job/t1.*.1.out >"$TEST_KEY.job.out" +grep '^hello ' $SUITE_RUN_DIR/log/job/*/t1/01/job.out >"$TEST_KEY.job.out" file_cmp "$TEST_KEY.job.out" "$TEST_KEY.job.out" <<__OUT__ -$SUITE_RUN_DIR/log/job/t1.2013010100.1.out:hello world -$SUITE_RUN_DIR/log/job/t1.2013010112.1.out:hello world +$SUITE_RUN_DIR/log/job/2013010100/t1/01/job.out:hello world +$SUITE_RUN_DIR/log/job/2013010112/t1/01/job.out:hello world __OUT__ #------------------------------------------------------------------------------- rose suite-clean -q -y $NAME diff --git a/t/rose-suite-run/15-reload-rc.t b/t/rose-suite-run/15-reload-rc.t index 0327761c4c..6d75333f86 100755 --- a/t/rose-suite-run/15-reload-rc.t +++ b/t/rose-suite-run/15-reload-rc.t @@ -28,7 +28,7 @@ mkdir -p $HOME/cylc-run SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) rose suite-run -q -n $NAME --no-gcontrol -C src -poll ! test -e "$SUITE_RUN_DIR/log/job/t1.2013010100.1.status" +poll ! test -e "$SUITE_RUN_DIR/log/job/2013010100/t1/01/job.status" #------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE" cat >src/rose-suite.conf <<'__CONF__' @@ -57,10 +57,10 @@ hello earth __TXT__ # Wait for the suite to complete poll test -e "$HOME/.cylc/ports/$NAME" -grep '^hello ' $SUITE_RUN_DIR/log/job/t1.*.1.out >"$TEST_KEY.job.out" +grep '^hello ' $SUITE_RUN_DIR/log/job/*/t1/01/job.out >"$TEST_KEY.job.out" file_cmp "$TEST_KEY.job.out" "$TEST_KEY.job.out" <<__OUT__ -$SUITE_RUN_DIR/log/job/t1.2013010100.1.out:hello world -$SUITE_RUN_DIR/log/job/t1.2013010112.1.out:hello earth +$SUITE_RUN_DIR/log/job/2013010100/t1/01/job.out:hello world +$SUITE_RUN_DIR/log/job/2013010112/t1/01/job.out:hello earth __OUT__ #------------------------------------------------------------------------------- rose suite-clean -q -y $NAME diff --git a/t/rose-suite-run/08-jinja2-insert.t b/t/rose-suite-run/18-jinja2-insert.t similarity index 100% rename from t/rose-suite-run/08-jinja2-insert.t rename to t/rose-suite-run/18-jinja2-insert.t diff --git a/t/rose-suite-shutdown/02-rose-stem-name.t b/t/rose-suite-shutdown/02-rose-stem-name.t index 671c51412d..8534f73f10 100755 --- a/t/rose-suite-shutdown/02-rose-stem-name.t +++ b/t/rose-suite-shutdown/02-rose-stem-name.t @@ -37,7 +37,7 @@ ln -s $TEST_SOURCE_DIR/$TEST_KEY_BASE $NAME/rose-stem cd $NAME TIMEOUT=$(($(date +%s) + 60)) while (($(date +%s) < $TIMEOUT)) \ - && [[ ! -e $SUITE_RUN_DIR/log/job/my_task_1.1.1.status ]] + && [[ ! -e $SUITE_RUN_DIR/log/job/1/my_task_1/01/job.status ]] do sleep 1 done diff --git a/t/rose-task-run/00-run-basic.t b/t/rose-task-run/00-run-basic.t index ec4b3ebd00..93a2b31509 100755 --- a/t/rose-task-run/00-run-basic.t +++ b/t/rose-task-run/00-run-basic.t @@ -23,28 +23,13 @@ export ROSE_CONF_PATH= #------------------------------------------------------------------------------- -tests 43 +tests 44 #------------------------------------------------------------------------------- # Run the suite. -TEST_KEY=$TEST_KEY_BASE SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) -run_pass "$TEST_KEY" \ - rose suite-run -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ - --no-gcontrol --host=localhost -#------------------------------------------------------------------------------- -# Wait for the suite to complete -TEST_KEY=$TEST_KEY_BASE-suite-run-wait -TIMEOUT=$(($(date +%s) + 300)) # wait 5 minutes -while [[ -e $HOME/.cylc/ports/$NAME ]] && (($(date +%s) < TIMEOUT)); do - sleep 1 -done -if [[ -e $HOME/.cylc/ports/$NAME ]]; then - fail "$TEST_KEY" - exit 1 -else - pass "$TEST_KEY" -fi +rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ + --no-gcontrol --host=localhost -- --debug #------------------------------------------------------------------------------- MY_PATH= for P in $(ls -d $SUITE_RUN_DIR/etc/my-path/*); do @@ -65,7 +50,7 @@ PREV_CYCLE= for CYCLE in 2013010100 2013010112 2013010200; do TEST_KEY=$TEST_KEY_BASE-file-$CYCLE TASK=my_task_1 - FILE=$HOME/cylc-run/$NAME/log/job/$TASK.$CYCLE.1.txt + FILE=$HOME/cylc-run/$NAME/log/job/$CYCLE/$TASK/01/job.txt file_test "$TEST_KEY" $FILE file_grep "$TEST_KEY-ROSE_SUITE_DIR" "ROSE_SUITE_DIR=$SUITE_RUN_DIR" $FILE file_grep "$TEST_KEY-ROSE_SUITE_DIR_REL" \ @@ -74,8 +59,10 @@ for CYCLE in 2013010100 2013010112 2013010200; do file_grep "$TEST_KEY-ROSE_TASK_NAME" "ROSE_TASK_NAME=$TASK" $FILE file_grep "$TEST_KEY-ROSE_TASK_CYCLE_TIME" \ "ROSE_TASK_CYCLE_TIME=$CYCLE" $FILE + file_grep "$TEST_KEY-ROSE_TASK_LOG_DIR" \ + "ROSE_TASK_LOG_DIR=${FILE%/job.txt}" $FILE file_grep "$TEST_KEY-ROSE_TASK_LOG_ROOT" \ - "ROSE_TASK_LOG_ROOT=${FILE%.txt}" $FILE + "ROSE_TASK_LOG_ROOT=${FILE%/job.txt}/job" $FILE file_grep "$TEST_KEY-ROSE_DATA" "ROSE_DATA=$SUITE_RUN_DIR/share/data" $FILE file_grep "$TEST_KEY-ROSE_DATAC" \ "ROSE_DATAC=$SUITE_RUN_DIR/share/data/$CYCLE" $FILE diff --git a/t/rose-task-run/01-run-basic-iso.t b/t/rose-task-run/01-run-basic-iso.t index 280aecb4ab..bf3e3e1261 100644 --- a/t/rose-task-run/01-run-basic-iso.t +++ b/t/rose-task-run/01-run-basic-iso.t @@ -33,25 +33,10 @@ if (($? != 0)); then exit 0 fi #------------------------------------------------------------------------------- -tests 43 +tests 44 #------------------------------------------------------------------------------- -TEST_KEY=$TEST_KEY_BASE -run_pass "$TEST_KEY" \ - rose suite-run -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ - --no-gcontrol --host=localhost -#------------------------------------------------------------------------------- -# Wait for the suite to complete -TEST_KEY=$TEST_KEY_BASE-suite-run-wait -TIMEOUT=$(($(date +%s) + 300)) # wait 5 minutes -while [[ -e $HOME/.cylc/ports/$NAME ]] && (($(date +%s) < TIMEOUT)); do - sleep 1 -done -if [[ -e $HOME/.cylc/ports/$NAME ]]; then - fail "$TEST_KEY" - exit 1 -else - pass "$TEST_KEY" -fi +rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ + --no-gcontrol --host=localhost -- --debug #------------------------------------------------------------------------------- MY_PATH= for P in $(ls -d $SUITE_RUN_DIR/etc/my-path/*); do @@ -72,7 +57,7 @@ PREV_CYCLE= for CYCLE in 20130101T0000Z 20130101T1200Z 20130102T0000Z; do TEST_KEY=$TEST_KEY_BASE-file-$CYCLE TASK=my_task_1 - FILE=$HOME/cylc-run/$NAME/log/job/$TASK.$CYCLE.1.txt + FILE=$HOME/cylc-run/$NAME/log/job/$CYCLE/$TASK/01/job.txt file_test "$TEST_KEY" $FILE file_grep "$TEST_KEY-ROSE_SUITE_DIR" "ROSE_SUITE_DIR=$SUITE_RUN_DIR" $FILE file_grep "$TEST_KEY-ROSE_SUITE_DIR_REL" \ @@ -81,8 +66,10 @@ for CYCLE in 20130101T0000Z 20130101T1200Z 20130102T0000Z; do file_grep "$TEST_KEY-ROSE_TASK_NAME" "ROSE_TASK_NAME=$TASK" $FILE file_grep "$TEST_KEY-ROSE_TASK_CYCLE_TIME" \ "ROSE_TASK_CYCLE_TIME=$CYCLE" $FILE + file_grep "$TEST_KEY-ROSE_TASK_LOG_DIR" \ + "ROSE_TASK_LOG_DIR=${FILE%/job.txt}" $FILE file_grep "$TEST_KEY-ROSE_TASK_LOG_ROOT" \ - "ROSE_TASK_LOG_ROOT=${FILE%.txt}" $FILE + "ROSE_TASK_LOG_ROOT=${FILE%job.txt}job" $FILE file_grep "$TEST_KEY-ROSE_DATA" "ROSE_DATA=$SUITE_RUN_DIR/share/data" $FILE file_grep "$TEST_KEY-ROSE_DATAC" \ "ROSE_DATAC=$SUITE_RUN_DIR/share/data/$CYCLE" $FILE diff --git a/t/rose-task-run/03-env-basic-iso.t b/t/rose-task-run/03-env-basic-iso.t index c4de7e9a3e..3a7c52e512 120000 --- a/t/rose-task-run/03-env-basic-iso.t +++ b/t/rose-task-run/03-env-basic-iso.t @@ -1 +1 @@ -00-run-basic-iso.t \ No newline at end of file +01-run-basic-iso.t \ No newline at end of file diff --git a/t/rose-task-run/03-env-basic-iso/suite.rc b/t/rose-task-run/03-env-basic-iso/suite.rc index 6f29dde5c3..538cbb4739 100644 --- a/t/rose-task-run/03-env-basic-iso/suite.rc +++ b/t/rose-task-run/03-env-basic-iso/suite.rc @@ -2,29 +2,27 @@ [cylc] UTC mode = True [[event hooks]] - timeout handler = "rose suite-hook --shutdown" + timeout handler = rose suite-hook --shutdown timeout = 2 [scheduling] initial cycle point = 20130101T0000Z - final cycle point = 20130102T0000Z + final cycle point = 20130102T0000Z [[dependencies]] [[[ PT12H ]]] - graph = """ -my_task_1 -""" + graph = my_task_1 [runtime] [[root]] environment scripting = """ eval $(rose task-env --cycle-offset=PT12H --path=MY_PATH='etc/my-path/*') """ - command scripting = """rose task-run --path=MY_PATH='etc/your-path'""" + command scripting = rose task-run --path=MY_PATH='etc/your-path' [[[event hooks]]] - succeeded handler = "rose suite-hook" - failed handler = "rose suite-hook --shutdown" - submission failed handler = "rose suite-hook --shutdown" - submission timeout handler = "rose suite-hook" - execution timeout handler = "rose suite-hook" + succeeded handler = rose suite-hook + failed handler = rose suite-hook --shutdown + submission failed handler = rose suite-hook --shutdown + submission timeout handler = rose suite-hook + execution timeout handler = rose suite-hook submission timeout = 1 - execution timeout = 1 + execution timeout = 1 [[my_task_1]] diff --git a/t/rose-task-run/04-run-path-empty.t b/t/rose-task-run/04-run-path-empty.t index c3daae2a01..9b1d382312 100755 --- a/t/rose-task-run/04-run-path-empty.t +++ b/t/rose-task-run/04-run-path-empty.t @@ -23,34 +23,19 @@ export ROSE_CONF_PATH= #------------------------------------------------------------------------------- -tests 5 +tests 3 #------------------------------------------------------------------------------- # Run the suite. -TEST_KEY=$TEST_KEY_BASE SUITE_RUN_DIR=$(mktemp -d --tmpdir=$HOME/cylc-run 'rose-test-battery.XXXXXX') NAME=$(basename $SUITE_RUN_DIR) -run_pass "$TEST_KEY" \ - rose suite-run -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ - --no-gcontrol --host=localhost -#------------------------------------------------------------------------------- -# Wait for the suite to complete -TEST_KEY=$TEST_KEY_BASE-suite-run-wait -TIMEOUT=$(($(date +%s) + 300)) # wait 5 minutes -while [[ -e $HOME/.cylc/ports/$NAME ]] && (($(date +%s) < TIMEOUT)); do - sleep 1 -done -if [[ -e $HOME/.cylc/ports/$NAME ]]; then - fail "$TEST_KEY" - exit 1 -else - pass "$TEST_KEY" -fi +rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ + --no-gcontrol --host=localhost -- --debug #------------------------------------------------------------------------------- PREV_CYCLE= for CYCLE in 2013010100 2013010112 2013010200; do TEST_KEY=$TEST_KEY_BASE-file-$CYCLE TASK=my_task_1 - FILE=$HOME/cylc-run/$NAME/log/job/$TASK.$CYCLE.1.txt + FILE=$HOME/cylc-run/$NAME/log/job/$CYCLE/$TASK/01/job.txt file_grep "$TEST_KEY-PATH" \ "PATH=$SUITE_RUN_DIR/app/$TASK/bin:$SUITE_RUN_DIR/etc/your-path" $FILE PREV_CYCLE=$CYCLE diff --git a/t/rose-task-run/05-app-prune-host-ls.out b/t/rose-task-run/05-app-prune-host-ls.out index f6b939d0bd..c6684375fa 100644 --- a/t/rose-task-run/05-app-prune-host-ls.out +++ b/t/rose-task-run/05-app-prune-host-ls.out @@ -1,8 +1,5 @@ cylc-run/$NAME/log/job: -my_task_2.2013010300.1 -my_task_2.2013010300.1.err -my_task_2.2013010300.1.out -my_task_2.2013010300.1.status +2013010300 cylc-run/$NAME/share/data: 2013010200 @@ -10,4 +7,4 @@ cylc-run/$NAME/share/data: 2013010300 cylc-run/$NAME/work: -my_task_2.2013010300 +2013010300 diff --git a/t/rose-task-run/05-app-prune-ls.out b/t/rose-task-run/05-app-prune-ls.out index 9324dafb36..99f4603678 100644 --- a/t/rose-task-run/05-app-prune-ls.out +++ b/t/rose-task-run/05-app-prune-ls.out @@ -3,30 +3,8 @@ $SUITE_RUN_DIR/log/job-2013010112.tar.gz $SUITE_RUN_DIR/log/job-2013010200.tar.gz $SUITE_RUN_DIR/log/job: -my_task_1.2013010212.1 -my_task_1.2013010212.1.err -my_task_1.2013010212.1.out -my_task_1.2013010212.1.status -my_task_1.2013010300.1 -my_task_1.2013010300.1.err -my_task_1.2013010300.1.out -my_task_1.2013010300.1.status -my_task_2.2013010212.1 -my_task_2.2013010212.1.err -my_task_2.2013010212.1.out -my_task_2.2013010212.1.status -my_task_2.2013010300.1 -my_task_2.2013010300.1.err -my_task_2.2013010300.1.out -my_task_2.2013010300.1.status -rose_prune.2013010212.1 -rose_prune.2013010212.1.err -rose_prune.2013010212.1.out -rose_prune.2013010212.1.status -rose_prune.2013010300.1 -rose_prune.2013010300.1.err -rose_prune.2013010300.1.out -rose_prune.2013010300.1.status +2013010212 +2013010300 $SUITE_RUN_DIR/share/data: 2013010200 @@ -34,5 +12,4 @@ $SUITE_RUN_DIR/share/data: 2013010300 $SUITE_RUN_DIR/work: -my_task_1.2013010300 -rose_prune.2013010300 +2013010300 diff --git a/t/rose-task-run/05-app-prune.log b/t/rose-task-run/05-app-prune.log index afd5155356..15d59a2456 100644 --- a/t/rose-task-run/05-app-prune.log +++ b/t/rose-task-run/05-app-prune.log @@ -1,95 +1,42 @@ -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1 -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1.err -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1.out -[INFO] delete: $JOB_HOST:my_task_2.2013010100.1.status +[INFO] delete: $JOB_HOST:log/job/2013010100/ [INFO] delete: $JOB_HOST:share/data/2013010100/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.2013010100 +[INFO] delete: $JOB_HOST:work/2013010100 [INFO] delete: share/data/2013010100/a-hello-1 -[INFO] delete: work/my_task_1.2013010100 -[INFO] delete: work/rose_prune.2013010100 -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1 -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1.err -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1.out -[INFO] delete: $JOB_HOST:my_task_2.2013010112.1.status -[INFO] create: job-2013010100.tar.gz -[INFO] delete: job/cold.2013010100.1 -[INFO] delete: job/cold.2013010100.1.err -[INFO] delete: job/cold.2013010100.1.out -[INFO] delete: job/cold.2013010100.1.status -[INFO] delete: job/my_task_1.2013010100.1 -[INFO] delete: job/my_task_1.2013010100.1.err -[INFO] delete: job/my_task_1.2013010100.1.out -[INFO] delete: job/my_task_1.2013010100.1.status -[INFO] delete: job/my_task_2.2013010100.1 -[INFO] delete: job/my_task_2.2013010100.1.err -[INFO] delete: job/my_task_2.2013010100.1.out -[INFO] delete: job/my_task_2.2013010100.1.status -[INFO] delete: job/rose_prune.2013010100.1 -[INFO] delete: job/rose_prune.2013010100.1.err -[INFO] delete: job/rose_prune.2013010100.1.out -[INFO] delete: job/rose_prune.2013010100.1.status +[INFO] delete: work/2013010100 +[INFO] delete: $JOB_HOST:log/job/2013010112/ +[INFO] create: log/job-2013010100.tar.gz +[INFO] delete: log/job/2013010100/ [INFO] delete: $JOB_HOST:share/data/2013010100/b-hello-2 [INFO] delete: $JOB_HOST:share/data/2013010100/c-hello-2 [INFO] delete: $JOB_HOST:share/data/2013010112/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.2013010112 +[INFO] delete: $JOB_HOST:work/2013010112 [INFO] delete: share/data/2013010100/b-hello-1 [INFO] delete: share/data/2013010100/c-hello-1 [INFO] delete: share/data/2013010112/a-hello-1 -[INFO] delete: work/my_task_1.2013010112 -[INFO] delete: work/rose_prune.2013010112 -[INFO] delete: $JOB_HOST:my_task_2.2013010200.1 -[INFO] delete: $JOB_HOST:my_task_2.2013010200.1.err -[INFO] delete: $JOB_HOST:my_task_2.2013010200.1.out -[INFO] delete: $JOB_HOST:my_task_2.2013010200.1.status -[INFO] create: job-2013010112.tar.gz -[INFO] delete: job/my_task_1.2013010112.1 -[INFO] delete: job/my_task_1.2013010112.1.err -[INFO] delete: job/my_task_1.2013010112.1.out -[INFO] delete: job/my_task_1.2013010112.1.status -[INFO] delete: job/my_task_2.2013010112.1 -[INFO] delete: job/my_task_2.2013010112.1.err -[INFO] delete: job/my_task_2.2013010112.1.out -[INFO] delete: job/my_task_2.2013010112.1.status -[INFO] delete: job/rose_prune.2013010112.1 -[INFO] delete: job/rose_prune.2013010112.1.err -[INFO] delete: job/rose_prune.2013010112.1.out -[INFO] delete: job/rose_prune.2013010112.1.status +[INFO] delete: work/2013010112 +[INFO] delete: $JOB_HOST:log/job/2013010200/ +[INFO] create: log/job-2013010112.tar.gz +[INFO] delete: log/job/2013010112/ [INFO] delete: $JOB_HOST:share/data/2013010100 [INFO] delete: $JOB_HOST:share/data/2013010112/b-hello-2 [INFO] delete: $JOB_HOST:share/data/2013010112/c-hello-2 [INFO] delete: $JOB_HOST:share/data/2013010200/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.2013010200 +[INFO] delete: $JOB_HOST:work/2013010200 [INFO] delete: share/data/2013010100 [INFO] delete: share/data/2013010112/b-hello-1 [INFO] delete: share/data/2013010112/c-hello-1 [INFO] delete: share/data/2013010200/a-hello-1 -[INFO] delete: work/my_task_1.2013010200 -[INFO] delete: work/rose_prune.2013010200 -[INFO] delete: $JOB_HOST:my_task_2.2013010212.1 -[INFO] delete: $JOB_HOST:my_task_2.2013010212.1.err -[INFO] delete: $JOB_HOST:my_task_2.2013010212.1.out -[INFO] delete: $JOB_HOST:my_task_2.2013010212.1.status -[INFO] create: job-2013010200.tar.gz -[INFO] delete: job/my_task_1.2013010200.1 -[INFO] delete: job/my_task_1.2013010200.1.err -[INFO] delete: job/my_task_1.2013010200.1.out -[INFO] delete: job/my_task_1.2013010200.1.status -[INFO] delete: job/my_task_2.2013010200.1 -[INFO] delete: job/my_task_2.2013010200.1.err -[INFO] delete: job/my_task_2.2013010200.1.out -[INFO] delete: job/my_task_2.2013010200.1.status -[INFO] delete: job/rose_prune.2013010200.1 -[INFO] delete: job/rose_prune.2013010200.1.err -[INFO] delete: job/rose_prune.2013010200.1.out -[INFO] delete: job/rose_prune.2013010200.1.status +[INFO] delete: work/2013010200 +[INFO] delete: $JOB_HOST:log/job/2013010212/ +[INFO] create: log/job-2013010200.tar.gz +[INFO] delete: log/job/2013010200/ [INFO] delete: $JOB_HOST:share/data/2013010112 [INFO] delete: $JOB_HOST:share/data/2013010200/b-hello-2 [INFO] delete: $JOB_HOST:share/data/2013010200/c-hello-2 [INFO] delete: $JOB_HOST:share/data/2013010212/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.2013010212 +[INFO] delete: $JOB_HOST:work/2013010212 [INFO] delete: share/data/2013010112 [INFO] delete: share/data/2013010200/b-hello-1 [INFO] delete: share/data/2013010200/c-hello-1 [INFO] delete: share/data/2013010212/a-hello-1 -[INFO] delete: work/my_task_1.2013010212 -[INFO] delete: work/rose_prune.2013010212 +[INFO] delete: work/2013010212 diff --git a/t/rose-task-run/06-app-prune-iso-host-ls.out b/t/rose-task-run/06-app-prune-iso-host-ls.out index 19ff8a142b..37c122a8cc 100644 --- a/t/rose-task-run/06-app-prune-iso-host-ls.out +++ b/t/rose-task-run/06-app-prune-iso-host-ls.out @@ -1,8 +1,5 @@ cylc-run/$NAME/log/job: -my_task_2.20130103T0000Z.1 -my_task_2.20130103T0000Z.1.err -my_task_2.20130103T0000Z.1.out -my_task_2.20130103T0000Z.1.status +20130103T0000Z cylc-run/$NAME/share/data: 20130102T0000Z @@ -10,4 +7,4 @@ cylc-run/$NAME/share/data: 20130103T0000Z cylc-run/$NAME/work: -my_task_2.20130103T0000Z +20130103T0000Z diff --git a/t/rose-task-run/06-app-prune-iso-ls.out b/t/rose-task-run/06-app-prune-iso-ls.out index 0a185784c0..448b2255f3 100644 --- a/t/rose-task-run/06-app-prune-iso-ls.out +++ b/t/rose-task-run/06-app-prune-iso-ls.out @@ -3,30 +3,8 @@ $SUITE_RUN_DIR/log/job-20130101T1200Z.tar.gz $SUITE_RUN_DIR/log/job-20130102T0000Z.tar.gz $SUITE_RUN_DIR/log/job: -my_task_1.20130102T1200Z.1 -my_task_1.20130102T1200Z.1.err -my_task_1.20130102T1200Z.1.out -my_task_1.20130102T1200Z.1.status -my_task_1.20130103T0000Z.1 -my_task_1.20130103T0000Z.1.err -my_task_1.20130103T0000Z.1.out -my_task_1.20130103T0000Z.1.status -my_task_2.20130102T1200Z.1 -my_task_2.20130102T1200Z.1.err -my_task_2.20130102T1200Z.1.out -my_task_2.20130102T1200Z.1.status -my_task_2.20130103T0000Z.1 -my_task_2.20130103T0000Z.1.err -my_task_2.20130103T0000Z.1.out -my_task_2.20130103T0000Z.1.status -rose_prune.20130102T1200Z.1 -rose_prune.20130102T1200Z.1.err -rose_prune.20130102T1200Z.1.out -rose_prune.20130102T1200Z.1.status -rose_prune.20130103T0000Z.1 -rose_prune.20130103T0000Z.1.err -rose_prune.20130103T0000Z.1.out -rose_prune.20130103T0000Z.1.status +20130102T1200Z +20130103T0000Z $SUITE_RUN_DIR/share/data: 20130102T0000Z @@ -34,5 +12,4 @@ $SUITE_RUN_DIR/share/data: 20130103T0000Z $SUITE_RUN_DIR/work: -my_task_1.20130103T0000Z -rose_prune.20130103T0000Z +20130103T0000Z diff --git a/t/rose-task-run/06-app-prune-iso.log b/t/rose-task-run/06-app-prune-iso.log index ae383dc173..27efc25878 100644 --- a/t/rose-task-run/06-app-prune-iso.log +++ b/t/rose-task-run/06-app-prune-iso.log @@ -1,91 +1,42 @@ -[INFO] delete: $JOB_HOST:my_task_2.20130101T0000Z.1 -[INFO] delete: $JOB_HOST:my_task_2.20130101T0000Z.1.err -[INFO] delete: $JOB_HOST:my_task_2.20130101T0000Z.1.out -[INFO] delete: $JOB_HOST:my_task_2.20130101T0000Z.1.status +[INFO] delete: $JOB_HOST:log/job/20130101T0000Z/ [INFO] delete: $JOB_HOST:share/data/20130101T0000Z/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.20130101T0000Z +[INFO] delete: $JOB_HOST:work/20130101T0000Z [INFO] delete: share/data/20130101T0000Z/a-hello-1 -[INFO] delete: work/my_task_1.20130101T0000Z -[INFO] delete: work/rose_prune.20130101T0000Z -[INFO] delete: $JOB_HOST:my_task_2.20130101T1200Z.1 -[INFO] delete: $JOB_HOST:my_task_2.20130101T1200Z.1.err -[INFO] delete: $JOB_HOST:my_task_2.20130101T1200Z.1.out -[INFO] delete: $JOB_HOST:my_task_2.20130101T1200Z.1.status -[INFO] create: job-20130101T0000Z.tar.gz -[INFO] delete: job/my_task_1.20130101T0000Z.1 -[INFO] delete: job/my_task_1.20130101T0000Z.1.err -[INFO] delete: job/my_task_1.20130101T0000Z.1.out -[INFO] delete: job/my_task_1.20130101T0000Z.1.status -[INFO] delete: job/my_task_2.20130101T0000Z.1 -[INFO] delete: job/my_task_2.20130101T0000Z.1.err -[INFO] delete: job/my_task_2.20130101T0000Z.1.out -[INFO] delete: job/my_task_2.20130101T0000Z.1.status -[INFO] delete: job/rose_prune.20130101T0000Z.1 -[INFO] delete: job/rose_prune.20130101T0000Z.1.err -[INFO] delete: job/rose_prune.20130101T0000Z.1.out -[INFO] delete: job/rose_prune.20130101T0000Z.1.status +[INFO] delete: work/20130101T0000Z +[INFO] delete: $JOB_HOST:log/job/20130101T1200Z/ +[INFO] create: log/job-20130101T0000Z.tar.gz +[INFO] delete: log/job/20130101T0000Z/ [INFO] delete: $JOB_HOST:share/data/20130101T0000Z/b-hello-2 [INFO] delete: $JOB_HOST:share/data/20130101T0000Z/c-hello-2 [INFO] delete: $JOB_HOST:share/data/20130101T1200Z/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.20130101T1200Z +[INFO] delete: $JOB_HOST:work/20130101T1200Z [INFO] delete: share/data/20130101T0000Z/b-hello-1 [INFO] delete: share/data/20130101T0000Z/c-hello-1 [INFO] delete: share/data/20130101T1200Z/a-hello-1 -[INFO] delete: work/my_task_1.20130101T1200Z -[INFO] delete: work/rose_prune.20130101T1200Z -[INFO] delete: $JOB_HOST:my_task_2.20130102T0000Z.1 -[INFO] delete: $JOB_HOST:my_task_2.20130102T0000Z.1.err -[INFO] delete: $JOB_HOST:my_task_2.20130102T0000Z.1.out -[INFO] delete: $JOB_HOST:my_task_2.20130102T0000Z.1.status -[INFO] create: job-20130101T1200Z.tar.gz -[INFO] delete: job/my_task_1.20130101T1200Z.1 -[INFO] delete: job/my_task_1.20130101T1200Z.1.err -[INFO] delete: job/my_task_1.20130101T1200Z.1.out -[INFO] delete: job/my_task_1.20130101T1200Z.1.status -[INFO] delete: job/my_task_2.20130101T1200Z.1 -[INFO] delete: job/my_task_2.20130101T1200Z.1.err -[INFO] delete: job/my_task_2.20130101T1200Z.1.out -[INFO] delete: job/my_task_2.20130101T1200Z.1.status -[INFO] delete: job/rose_prune.20130101T1200Z.1 -[INFO] delete: job/rose_prune.20130101T1200Z.1.err -[INFO] delete: job/rose_prune.20130101T1200Z.1.out -[INFO] delete: job/rose_prune.20130101T1200Z.1.status +[INFO] delete: work/20130101T1200Z +[INFO] delete: $JOB_HOST:log/job/20130102T0000Z/ +[INFO] create: log/job-20130101T1200Z.tar.gz +[INFO] delete: log/job/20130101T1200Z/ [INFO] delete: $JOB_HOST:share/data/20130101T0000Z [INFO] delete: $JOB_HOST:share/data/20130101T1200Z/b-hello-2 [INFO] delete: $JOB_HOST:share/data/20130101T1200Z/c-hello-2 [INFO] delete: $JOB_HOST:share/data/20130102T0000Z/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.20130102T0000Z +[INFO] delete: $JOB_HOST:work/20130102T0000Z [INFO] delete: share/data/20130101T0000Z [INFO] delete: share/data/20130101T1200Z/b-hello-1 [INFO] delete: share/data/20130101T1200Z/c-hello-1 [INFO] delete: share/data/20130102T0000Z/a-hello-1 -[INFO] delete: work/my_task_1.20130102T0000Z -[INFO] delete: work/rose_prune.20130102T0000Z -[INFO] delete: $JOB_HOST:my_task_2.20130102T1200Z.1 -[INFO] delete: $JOB_HOST:my_task_2.20130102T1200Z.1.err -[INFO] delete: $JOB_HOST:my_task_2.20130102T1200Z.1.out -[INFO] delete: $JOB_HOST:my_task_2.20130102T1200Z.1.status -[INFO] create: job-20130102T0000Z.tar.gz -[INFO] delete: job/my_task_1.20130102T0000Z.1 -[INFO] delete: job/my_task_1.20130102T0000Z.1.err -[INFO] delete: job/my_task_1.20130102T0000Z.1.out -[INFO] delete: job/my_task_1.20130102T0000Z.1.status -[INFO] delete: job/my_task_2.20130102T0000Z.1 -[INFO] delete: job/my_task_2.20130102T0000Z.1.err -[INFO] delete: job/my_task_2.20130102T0000Z.1.out -[INFO] delete: job/my_task_2.20130102T0000Z.1.status -[INFO] delete: job/rose_prune.20130102T0000Z.1 -[INFO] delete: job/rose_prune.20130102T0000Z.1.err -[INFO] delete: job/rose_prune.20130102T0000Z.1.out -[INFO] delete: job/rose_prune.20130102T0000Z.1.status +[INFO] delete: work/20130102T0000Z +[INFO] delete: $JOB_HOST:log/job/20130102T1200Z/ +[INFO] create: log/job-20130102T0000Z.tar.gz +[INFO] delete: log/job/20130102T0000Z/ [INFO] delete: $JOB_HOST:share/data/20130101T1200Z [INFO] delete: $JOB_HOST:share/data/20130102T0000Z/b-hello-2 [INFO] delete: $JOB_HOST:share/data/20130102T0000Z/c-hello-2 [INFO] delete: $JOB_HOST:share/data/20130102T1200Z/a-hello-2 -[INFO] delete: $JOB_HOST:work/my_task_2.20130102T1200Z +[INFO] delete: $JOB_HOST:work/20130102T1200Z [INFO] delete: share/data/20130101T1200Z [INFO] delete: share/data/20130102T0000Z/b-hello-1 [INFO] delete: share/data/20130102T0000Z/c-hello-1 [INFO] delete: share/data/20130102T1200Z/a-hello-1 -[INFO] delete: work/my_task_1.20130102T1200Z -[INFO] delete: work/rose_prune.20130102T1200Z +[INFO] delete: work/20130102T1200Z diff --git a/t/rose-task-run/06-app-prune-iso.t b/t/rose-task-run/06-app-prune-iso.t index 2578e47d75..06a03348bb 100755 --- a/t/rose-task-run/06-app-prune-iso.t +++ b/t/rose-task-run/06-app-prune-iso.t @@ -26,6 +26,10 @@ JOB_HOST=$(rose config --default= 't' 'job-host') JOB_HOST=$(rose host-select "$JOB_HOST") #------------------------------------------------------------------------------- # Test the suite. +JOB_HOST=$(rose config --default= 't' 'job-host') +if [[ -n $JOB_HOST ]]; then + JOB_HOST=$(rose host-select $JOB_HOST) +fi export ROSE_CONF_PATH= TEST_KEY=$TEST_KEY_BASE mkdir -p $HOME/cylc-run diff --git a/t/rose-task-run/07-app-arch.t b/t/rose-task-run/07-app-arch.t index 9aaba73bb1..75b188e075 100644 --- a/t/rose-task-run/07-app-arch.t +++ b/t/rose-task-run/07-app-arch.t @@ -54,7 +54,7 @@ for CYCLE in 2013010100 2013010112 2013010200; do sed '/^\[INFO\] [=!+]/!d; s/\(t(init)=\)[^Z]*Z/\1YYYY-mm-DDTHH:MM:SSZ/; s/\(dt(\(tran\|arch\))=\)[^s]*s/\1SSSSs/g' \ - $SUITE_RUN_DIR/log/job/archive.$CYCLE.*.out >"$TEST_KEY" + $SUITE_RUN_DIR/log/job/$CYCLE/archive/0*/job.out >"$TEST_KEY" file_cmp "$TEST_KEY" "$TEST_KEY" $TEST_SOURCE_DIR/$TEST_KEY_BASE-$CYCLE.out TEST_KEY="$TEST_KEY_BASE-planet-n" tar -tzf $SUITE_RUN_DIR/foo/$CYCLE/hello/worlds/planet-n.tar.gz | sort \ @@ -70,7 +70,7 @@ for CYCLE in 2013010100 2013010112 2013010200; do "$TEST_KEY-$CYCLE.out" "$TEST_KEY-$CYCLE.out.expected" TEST_KEY="$TEST_KEY_BASE-db" for TRY in 1 2; do - FILE=$SUITE_RUN_DIR/work/archive.$CYCLE/rose-arch-db-$TRY.out + FILE=$SUITE_RUN_DIR/work/$CYCLE/archive/rose-arch-db-$TRY.out sed "s?\\\$ROSE_DATAC?$SUITE_RUN_DIR/share/data/$CYCLE?" \ "$TEST_SOURCE_DIR/$TEST_KEY-$CYCLE-$TRY.out" >$FILE.expected file_cmp "$TEST_KEY-$CYCLE.out" $FILE.expected $FILE @@ -100,48 +100,48 @@ done # Results, bad ones CYCLE=2013010112 TEST_KEY="$TEST_KEY_BASE-bad-archive-1" -FILE_PREFIX="$SUITE_RUN_DIR/log/job/archive_bad_" -file_cmp "$TEST_KEY.err" "${FILE_PREFIX}1.$CYCLE.1.err" <<'__ERR__' +FILE_PREFIX="$SUITE_RUN_DIR/log/job/$CYCLE/archive_bad_" +file_cmp "$TEST_KEY.err" "${FILE_PREFIX}1/01/job.err" <<'__ERR__' [FAIL] foo://2013010112/hello/worlds/planet-n.tar.gz: bad command-format: foo put %(target)s %(source)s: KeyError: 'source' __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-2" -file_cmp "$TEST_KEY.err" "${FILE_PREFIX}2.$CYCLE.1.err" <<'__ERR__' +file_cmp "$TEST_KEY.err" "${FILE_PREFIX}2/01/job.err" <<'__ERR__' [FAIL] source=None: missing configuration error: 'source' __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-3" -file_cmp "$TEST_KEY.err" "${FILE_PREFIX}3.$CYCLE.1.err" <<'__ERR__' +file_cmp "$TEST_KEY.err" "${FILE_PREFIX}3/01/job.err" <<'__ERR__' [FAIL] source=$UNBOUND_PLANET-[1-9].txt: configuration value error: [UNDEFINED ENVIRONMENT VARIABLE] UNBOUND_PLANET __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-4" -file_cmp "$TEST_KEY.err" "${FILE_PREFIX}4.$CYCLE.1.err" <<'__ERR__' +file_cmp "$TEST_KEY.err" "${FILE_PREFIX}4/01/job.err" <<'__ERR__' [FAIL] [arch:$UNKNOWN_DARK_PLANETS.tar.gz]=: configuration value error: [UNDEFINED ENVIRONMENT VARIABLE] UNKNOWN_DARK_PLANETS __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-5" -file_cmp "$TEST_KEY.err" "${FILE_PREFIX}5.$CYCLE.1.err" <<'__ERR__' +file_cmp "$TEST_KEY.err" "${FILE_PREFIX}5/01/job.err" <<'__ERR__' [FAIL] [arch:inner.tar.gz]source=hello/mercurry.txt: configuration value error: [Errno 2] No such file or directory: 'hello/mercurry.txt' __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-6" -file_cmp "$TEST_KEY.err" "${FILE_PREFIX}6.$CYCLE.1.err" <<__ERR__ +file_cmp "$TEST_KEY.err" "${FILE_PREFIX}6/01/job.err" <<__ERR__ [FAIL] foo push foo://2013010112/hello/worlds/mars.txt.gz $SUITE_RUN_DIR/share/data/2013010112/hello/mars.txt # return-code=1, stderr= [FAIL] foo: push: unknown action __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-7" -file_cmp "$TEST_KEY.err" "$SUITE_RUN_DIR/log/job/archive_bad_7.$CYCLE.1.err" <<'__ERR__' +file_cmp "$TEST_KEY.err" "$SUITE_RUN_DIR/log/job/$CYCLE/archive_bad_7/01/job.err" <<'__ERR__' [FAIL] foo://2013010112/planet-n.tar.gz: bad rename-format: %(planet?maybedwarfplanet???)s: KeyError: 'planet?maybedwarfplanet???' __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-8" -file_cmp "$TEST_KEY.err" "$SUITE_RUN_DIR/log/job/archive_bad_8.$CYCLE.1.err" <<'__ERR__' +file_cmp "$TEST_KEY.err" "$SUITE_RUN_DIR/log/job/$CYCLE/archive_bad_8/01/job.err" <<'__ERR__' [FAIL] foo://2013010112/planet-n.tar.gz: bad rename-parser: planet-(?P[MVEJSUN]\w+.txt: error: unbalanced parenthesis __ERR__ TEST_KEY="$TEST_KEY_BASE-bad-archive-9" sed '/^\[INFO\] [=!+]/!d; s/\(t(init)=\)[^Z]*Z/\1YYYY-mm-DDTHH:MM:SSZ/; s/\(dt(\(tran\|arch\))=\)[^s]*s/\1SSSSs/g' \ - "$SUITE_RUN_DIR/log/job/archive_bad_9.$CYCLE.1.out" >"$TEST_KEY.out" + "$SUITE_RUN_DIR/log/job/$CYCLE/archive_bad_9/01/job.out" >"$TEST_KEY.out" file_cmp "$TEST_KEY.out" \ "$TEST_SOURCE_DIR/$TEST_KEY_BASE-bad-9.out" "$TEST_KEY.out" sed 's?\(hello/planet-5.txt\) .*\(/hello/planet-5.txt\)?\1 \2?' \ - "$SUITE_RUN_DIR/log/job/archive_bad_9.$CYCLE.1.err" >"$TEST_KEY.err" + "$SUITE_RUN_DIR/log/job/$CYCLE/archive_bad_9/01/job.err" >"$TEST_KEY.err" file_cmp "$TEST_KEY.err" "$TEST_KEY.err" <<__ERR__ [FAIL] my-bad-command $SUITE_RUN_DIR/share/data/2013010112/hello/planet-5.txt /hello/planet-5.txt # return-code=1, stderr= [FAIL] [my-bad-command] $SUITE_RUN_DIR/share/data/2013010112/hello/planet-5.txt /hello/planet-5.txt diff --git a/t/rose-task-run/08-app-fcm-make.t b/t/rose-task-run/08-app-fcm-make.t index cec680afd7..233cf9786b 100755 --- a/t/rose-task-run/08-app-fcm-make.t +++ b/t/rose-task-run/08-app-fcm-make.t @@ -88,22 +88,22 @@ fi #------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE-t1" # normal file_grep "$TEST_KEY.out" \ - "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/fcm_make_t1.1/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t1 -j 4" \ - $SUITE_RUN_DIR/log/job/fcm_make_t1.1.1.out + "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/1/fcm_make_t1/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t1 -j 4" \ + $SUITE_RUN_DIR/log/job/1/fcm_make_t1/01/job.out #------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE-t2" # use-pwd file_grep "$TEST_KEY.out" "\\[INFO\\] fcm make -j 4" \ - $SUITE_RUN_DIR/log/job/fcm_make_t2.1.1.out + $SUITE_RUN_DIR/log/job/1/fcm_make_t2/01/job.out #------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE-t3" # opt.jobs file_grep "$TEST_KEY.out" \ - "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/fcm_make_t3.1/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t3 -j 1" \ - $SUITE_RUN_DIR/log/job/fcm_make_t3.1.1.out + "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/1/fcm_make_t3/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t3 -j 1" \ + $SUITE_RUN_DIR/log/job/1/fcm_make_t3/01/job.out #------------------------------------------------------------------------------- TEST_KEY="$TEST_KEY_BASE-t4" # args file_grep "$TEST_KEY.out" \ - "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/fcm_make_t4.1/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t4 -j 4 -v -v" \ - $SUITE_RUN_DIR/log/job/fcm_make_t4.1.1.out + "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/1/fcm_make_t4/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t4 -j 4 -v -v" \ + $SUITE_RUN_DIR/log/job/1/fcm_make_t4/01/job.out #------------------------------------------------------------------------------- if [[ -z $JOB_HOST ]]; then skip 3 '[t]job-host not defined' @@ -111,16 +111,16 @@ else TEST_KEY="$TEST_KEY_BASE-t5" # mirror file_grep "$TEST_KEY.out.env" \ "\\[INFO\\] export ROSE_TASK_MIRROR_TARGET=$JOB_HOST:cylc-run/$NAME/share/fcm_make_t5" \ - $SUITE_RUN_DIR/log/job/fcm_make_t5.1.1.out + $SUITE_RUN_DIR/log/job/1/fcm_make_t5/01/job.out file_grep "$TEST_KEY.out.cmd" \ - "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/fcm_make_t5.1/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t5 -j 4" \ - $SUITE_RUN_DIR/log/job/fcm_make_t5.1.1.out + "\\[INFO\\] fcm make -f .*$SUITE_RUN_DIR/work/1/fcm_make_t5/fcm-make.cfg -C .*$SUITE_RUN_DIR/share/fcm_make_t5 -j 4" \ + $SUITE_RUN_DIR/log/job/1/fcm_make_t5/01/job.out TEST_KEY="$TEST_KEY_BASE-t5-part-2" rose suite-log -q --name=$NAME --update fcm_make2_t5 file_grep "$TEST_KEY.out" \ "\\[INFO\\] fcm make -C .*$NAME/share/fcm_make_t5 -j 4" \ - $SUITE_RUN_DIR/log/job/fcm_make2_t5.1.1.out + $SUITE_RUN_DIR/log/job/1/fcm_make2_t5/01/job.out fi #------------------------------------------------------------------------------- rose suite-clean -q -y $NAME diff --git a/t/rose-task-run/09-app-prune-work.log b/t/rose-task-run/09-app-prune-work.log index ad912f1bdd..2391984f83 100644 --- a/t/rose-task-run/09-app-prune-work.log +++ b/t/rose-task-run/09-app-prune-work.log @@ -1,36 +1,34 @@ [INFO] export ROSE_TASK_CYCLE_TIME=2013010100 [INFO] export ROSE_TASK_CYCLE_TIME=2013010112 -[INFO] delete: work/t1.2013010100/jupiter.txt -[INFO] delete: work/t2.2013010100/jupiter.txt +[INFO] delete: work/2013010100/t1/jupiter.txt +[INFO] delete: work/2013010100/t2/jupiter.txt [INFO] export ROSE_TASK_CYCLE_TIME=2013010200 -[INFO] delete: work/t1.2013010100/mars.txt -[INFO] delete: work/t1.2013010100/venus.txt -[INFO] delete: work/t1.2013010112/jupiter.txt -[INFO] delete: work/t2.2013010100/mars.txt -[INFO] delete: work/t2.2013010100/venus.txt -[INFO] delete: work/t2.2013010112/jupiter.txt -[INFO] delete: work/t3.2013010100/mars.txt -[INFO] delete: work/t3.2013010100/venus.txt +[INFO] delete: work/2013010100/t1/mars.txt +[INFO] delete: work/2013010100/t1/venus.txt +[INFO] delete: work/2013010100/t2/mars.txt +[INFO] delete: work/2013010100/t2/venus.txt +[INFO] delete: work/2013010100/t3/mars.txt +[INFO] delete: work/2013010100/t3/venus.txt +[INFO] delete: work/2013010112/t1/jupiter.txt +[INFO] delete: work/2013010112/t2/jupiter.txt [INFO] export ROSE_TASK_CYCLE_TIME=2013010212 -[INFO] delete: work/t1.2013010112/mars.txt -[INFO] delete: work/t1.2013010112/venus.txt -[INFO] delete: work/t1.2013010200/jupiter.txt -[INFO] delete: work/t2.2013010112/mars.txt -[INFO] delete: work/t2.2013010112/venus.txt -[INFO] delete: work/t2.2013010200/jupiter.txt -[INFO] delete: work/t3.2013010100 -[INFO] delete: work/t3.2013010112/mars.txt -[INFO] delete: work/t3.2013010112/venus.txt +[INFO] delete: work/2013010100/t3 +[INFO] delete: work/2013010112/t1/mars.txt +[INFO] delete: work/2013010112/t1/venus.txt +[INFO] delete: work/2013010112/t2/mars.txt +[INFO] delete: work/2013010112/t2/venus.txt +[INFO] delete: work/2013010112/t3/mars.txt +[INFO] delete: work/2013010112/t3/venus.txt +[INFO] delete: work/2013010200/t1/jupiter.txt +[INFO] delete: work/2013010200/t2/jupiter.txt [INFO] export ROSE_TASK_CYCLE_TIME=2013010300 -[INFO] delete: work/rose_prune.2013010100 -[INFO] delete: work/t1.2013010100 -[INFO] delete: work/t1.2013010200/mars.txt -[INFO] delete: work/t1.2013010200/venus.txt -[INFO] delete: work/t1.2013010212/jupiter.txt -[INFO] delete: work/t2.2013010100 -[INFO] delete: work/t2.2013010200/mars.txt -[INFO] delete: work/t2.2013010200/venus.txt -[INFO] delete: work/t2.2013010212/jupiter.txt -[INFO] delete: work/t3.2013010112 -[INFO] delete: work/t3.2013010200/mars.txt -[INFO] delete: work/t3.2013010200/venus.txt +[INFO] delete: work/2013010100 +[INFO] delete: work/2013010112/t3 +[INFO] delete: work/2013010200/t1/mars.txt +[INFO] delete: work/2013010200/t1/venus.txt +[INFO] delete: work/2013010200/t2/mars.txt +[INFO] delete: work/2013010200/t2/venus.txt +[INFO] delete: work/2013010200/t3/mars.txt +[INFO] delete: work/2013010200/t3/venus.txt +[INFO] delete: work/2013010212/t1/jupiter.txt +[INFO] delete: work/2013010212/t2/jupiter.txt diff --git a/t/rose-task-run/09-app-prune-work/app/rose_prune/rose-app.conf b/t/rose-task-run/09-app-prune-work/app/rose_prune/rose-app.conf index 6ee9769f2f..05eaaf901e 100644 --- a/t/rose-task-run/09-app-prune-work/app/rose_prune/rose-app.conf +++ b/t/rose-task-run/09-app-prune-work/app/rose_prune/rose-app.conf @@ -2,4 +2,4 @@ meta=rose_prune/HEAD mode=rose_prune [prune] -prune-work-at=-12h:t[12]:jupiter.txt -24h:'venus.txt mars.txt' -36h:t3: -48h +prune-work-at=-12h:t[12]/jupiter.txt -24h:'*/venus.txt */mars.txt' -36h:t3 -48h diff --git a/t/rose-task-run/11-specify-cycle-iso.t b/t/rose-task-run/11-specify-cycle-iso.t index 57ea275b63..d2908ad3d8 100755 --- a/t/rose-task-run/11-specify-cycle-iso.t +++ b/t/rose-task-run/11-specify-cycle-iso.t @@ -40,6 +40,5 @@ rose suite-run -q -C $TEST_SOURCE_DIR/$TEST_KEY_BASE --name=$NAME \ --no-gcontrol --host=localhost -- --debug #------------------------------------------------------------------------------- file_xxdiff "$TEST_KEY" "$SUITE_RUN_DIR/file" <<<'20121231T1200Z' -cat $SUITE_RUN_DIR/log/job/t1*err >/dev/tty rose suite-clean -q -y $NAME exit 0