def setUp(self): self.account = account_create() self.project = project_create() self.recipe_new = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_NEW', active=True, week=json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "hello", "values": { "say_first": "Hi Once", "say_second": "Hi Twice", "sleep": 0 }, "sequence": 1 }, ]), ) self.RECIPE_NEW = self.recipe_new.uid()
def setUp(self): self.account = account_create() self.project = project_create() self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_MANUAL', active = True, manual = True, week = [], hour = [], timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "manual", "values": {}, "sequence": 1 }, ]), ) now_tz = utc_to_timezone(datetime.utcnow(), self.recipe.timezone) self.recipe_done = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_MANUAL', active = True, manual = True, week = [], hour = [], timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "manual", "values": {}, "sequence": 1 }, ]), job_done = True, job_status = json.dumps({ "day":["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], "date_tz": str(now_tz.date()), "force": True, "tasks": [ { "instance": 1, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow()), "script": "manual", "hour": 0, "stdout":"", "stderr": "", "done": True } ] }), worker_uid = 'TEST_WORKER', worker_utm = utc_milliseconds() - (JOB_LOOKBACK_MS * 10) # important for test ( jobs older than this get job_done flag reset ) )
def setUp(self): self.account = account_create() self.project = project_create() self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_MANUAL', active = True, manual = True, week = [], hour = [], timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "manual", "values": {}, "sequence": 1 }, ]), ) self.recipe.update() now_tz = utc_to_timezone(datetime.utcnow(), self.recipe.timezone) self.recipe_done = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_MANUAL', active = True, manual = True, week = [], hour = [], timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "manual", "values": {}, "sequence": 1 }, ]), job_status = json.dumps({ "date_tz": str(now_tz.date()), "tasks": [ { "instance": 1, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow()), "script": "manual", "hour": 0, "stdout":"", "stderr": "", "done": True } ] }), worker_uid = 'TEST_WORKER', worker_utm = utc_milliseconds() - WORKER_LOOKBACK_EXPIRE ) self.recipe_done.update()
def setUp(self): self.account = account_create() self.project = project_create() now_tz = utc_to_timezone(datetime.utcnow(), 'America/Los_Angeles') self.job_done = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_DONE', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0}, "sequence": 1 }, ]), job_status = json.dumps({ "day":["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], "date_tz": str(now_tz.date()), "force": True, "tasks": [ { "instance": 1, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow()), "script": "hello", "hour": now_tz.hour, "stdout":"", "stderr": "", "done": True }, { "instance": 2, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow()), "script": "hello", "hour": now_tz.hour, "stdout":"", "stderr": "", "done": True } ] }), job_done = False, worker_uid = "SAMPLE_WORKER", worker_utm = utc_milliseconds() - (JOB_LOOKBACK_MS * 2) ) self.RECIPE_DONE = self.job_done.uid()
def project_create(share=''): with open( os.environ.get('STARTHINKER_SERVICE', 'MISSING RUN deploy.sh TO SET'), 'r') as f: service = f.read() project = Project.objects.create(account=account_create(), service=service, share=share) return project
def setUp(self): self.account = account_create() self.project = project_create() now_tz = utc_to_timezone(datetime.utcnow(), 'America/Los_Angeles') self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NEW', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": { "sleep":10 }, # seconds "sequence": 1 }, ]), job_status = json.dumps({ "date_tz":str(now_tz.date()), "tasks": [ { "instance": 1, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow() - timedelta(days=1)), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False }, { "instance": 2, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow() - timedelta(days=1)), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False } ] }), job_utm = test_job_utm() ) self.workers = Workers('TEST_WORKER', 5, 60)
def setUp(self): self.account = account_create() self.project = project_create() now_tz = utc_to_timezone(datetime.utcnow(), 'America/Los_Angeles') today_tz = now_tz.strftime('%a') yesterday_tz = (now_tz - timedelta(hours=24)).strftime('%a') tomorrow_tz = (now_tz + timedelta(hours=24)).strftime('%a') self.recipe_today = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_TODAY', active=True, week=json.dumps([today_tz]), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "hello", "values": {}, "sequence": 1 }, ]), worker_uid="OTHER_WORKER", worker_utm=utc_milliseconds() - ( JOB_LOOKBACK_MS * 10 ) # important for test ( jobs older than this get job_done flag reset ) ) self.recipe_not_today = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_NOT_TODAY', active=True, week=json.dumps([yesterday_tz, tomorrow_tz]), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "hello", "values": {}, "sequence": 1 }, ]), worker_uid="OTHER_WORKER", worker_utm=utc_milliseconds() - ( JOB_LOOKBACK_MS * 10 ) # important for test ( jobs older than this get job_done flag reset ) )
def setUp(self): self.account = account_create() self.project = project_create() now_tz = utc_to_timezone(datetime.utcnow(), 'America/Los_Angeles') self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NEW', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": { "error":"Triggered the error mechanic on purpose."}, "sequence": 1 }, ]), job_status = json.dumps({ "date_tz":str(now_tz.date()), "tasks": [ { "instance": 1, "order": 0, "event": "JOB_PENDING", "utc":str(datetime.utcnow()), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False }, { "instance": 2, "order": 2, "event": "JOB_PENDING", "utc":str(datetime.utcnow()), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False }, ] }), job_utm = test_job_utm() )
def setUp(self): self.account = account_create() self.project = project_create() self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NEW', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([1,3,23]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "test", "values": {}, "sequence": 1 }, ]), )
def setUp(self): self.account = account_create() self.project = project_create() self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NEW', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": { "error":"Triggered the error mechanic on purpose."}, "sequence": 1 }, ]), )
def setUp(self): self.account = account_create() self.project = project_create() self.recipe = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_MANUAL', active=True, manual=True, week=[], hour=[], timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "manual", "values": {}, "sequence": 1 }, ]), )
def setUp(self): self.account = account_create() self.project = project_create() self.recipe = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NEW', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": { "sleep":10 }, # seconds "sequence": 1 }, ]), ) self.workers = Workers('TEST_WORKER', 5, 60)
def setUp(self): self.account = account_create() self.project_user = project_create() self.project_domain = project_create('domain') self.project_global = project_create('global')
def setUp(self): self.account = account_create() self.project = project_create() self.job_new = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_NEW', active=True, week=json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "hello", "values": { "say_first": "Hi Once", "say_second": "Hi Twice", "sleep": 0 }, "sequence": 1 }, ]), ) self.RECIPE_NEW = self.job_new.uid() self.job_expired = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_EXPIRED', active=True, week=json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "hello", "values": { "say_first": "Hi Once", "say_second": "Hi Twice", "sleep": 0 }, "sequence": 1 }, ]), job_done=False, worker_uid="SAMPLE_WORKER", worker_utm=utc_milliseconds() - (JOB_LOOKBACK_MS * 2)) self.RECIPE_EXPIRED = self.job_expired.uid() self.job_running = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_RUNNING', active=True, week=json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([{ "tag": "hello", "values": { "say_first": "Hi Once", "say_second": "Hi Twice", "sleep": 0 }, "sequence": 1 }]), job_done=False, worker_uid="OTHER_WORKER", worker_utm=utc_milliseconds()) self.RECIPE_RUNNING = self.job_running.uid() self.job_paused = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_PAUSED', active=False, week=json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([{ "tag": "hello", "values": { "say_first": "Hi Once", "say_second": "Hi Twice", "sleep": 0 }, "sequence": 1 }]), job_done=False, worker_uid="OTHER_WORKER", worker_utm=utc_milliseconds() - (JOB_LOOKBACK_MS * 10)) self.RECIPE_PAUSED = self.job_paused.uid() # paused so its not part of the normal flow ( unpause to use in test ) self.job_error = Recipe.objects.create( account=self.account, project=self.project, name='RECIPE_ERROR', active=False, week=json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour=json.dumps([0]), timezone='America/Los_Angeles', tasks=json.dumps([ { "tag": "hello", "values": { "say_first": "Hi Once", "say_second": "Hi Twice", "sleep": 0, "errror": "An error is triggered." }, "sequence": 1 }, ]), job_done=False, worker_uid="", worker_utm=0) self.RECIPE_ERROR = self.job_error.uid()
def setUp(self): self.account = account_create() self.project = project_create() now_tz = utc_to_timezone(datetime.utcnow(), 'America/Los_Angeles') status = { "date_tz":str(now_tz.date()), "tasks": [ { "instance": 1, "order": 0, "event": "JOB_PENDING", "utc":str(datetime.utcnow()), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False }, { "instance": 2, "order": 2, "event": "JOB_PENDING", "utc":str(datetime.utcnow()), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False }, ] } self.job_new = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NEW', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0}, "sequence": 1 }, ]), ) self.RECIPE_NEW = self.job_new.uid() self.job_queued = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_QUEUED', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0}, "sequence": 1 }, ]), job_status = json.dumps(status.copy()), job_utm = test_job_utm() ) self.RECIPE_QUEUED = self.job_queued.uid() self.job_expired = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_EXPIRED', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0}, "sequence": 1 }, ]), job_status = json.dumps(status.copy()), job_utm = test_job_utm(), worker_uid = "SAMPLE_WORKER", worker_utm = utc_milliseconds() - WORKER_LOOKBACK_EXPIRE ) self.RECIPE_EXPIRED = self.job_expired.uid() self.job_running = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_RUNNING', active = True, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0}, "sequence": 1 } ]), job_status = json.dumps(status.copy()), job_utm = test_job_utm(), worker_uid = "OTHER_WORKER", worker_utm = utc_milliseconds() ) self.RECIPE_RUNNING = self.job_running.uid() self.job_paused = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_PAUSED', active = False, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0}, "sequence": 1 } ]), job_status = json.dumps(status.copy()), job_utm = test_job_utm(), worker_uid = "OTHER_WORKER", worker_utm = utc_milliseconds() - WORKER_LOOKBACK_EXPIRE ) self.RECIPE_PAUSED = self.job_paused.uid() # paused so its not part of the normal flow ( unpause to use in test ) self.job_error = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_ERROR', active = False, week = json.dumps(['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {"say_first":"Hi Once", "say_second":"Hi Twice", "sleep":0, "errror":"An error is triggered."}, "sequence": 1 }, ]), job_status = json.dumps(status.copy()), job_utm = test_job_utm(), worker_uid = "", worker_utm = 0 ) self.RECIPE_ERROR = self.job_error.uid()
def setUp(self): self.account = account_create() self.project = project_create() now_tz = utc_to_timezone(datetime.utcnow(), 'America/Los_Angeles') today_tz = now_tz.strftime('%a') yesterday_tz = (now_tz - timedelta(days=1)).strftime('%a') tomorrow_tz = (now_tz + timedelta(days=1)).strftime('%a') self.recipe_today = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_TODAY', active = True, week = json.dumps([today_tz]), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {}, "sequence": 1 }, ]), job_status = json.dumps({ "date_tz":str(now_tz.date()), "tasks": [ { "instance": 1, "order": 0, "event": "JOB_PENDING", "utc":str(datetime.utcnow()), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False }, { "instance": 2, "order": 0, "event": "JOB_PENDING", "utc":str(datetime.utcnow()), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": False } ] }), worker_uid = "OTHER_WORKER", worker_utm = utc_milliseconds() - WORKER_LOOKBACK_EXPIRE, job_utm = test_job_utm() ) self.recipe_not_today = Recipe.objects.create( account = self.account, project = self.project, name = 'RECIPE_NOT_TODAY', active = True, week = json.dumps([yesterday_tz, tomorrow_tz]), hour = json.dumps([0]), timezone = 'America/Los_Angeles', tasks = json.dumps([ { "tag": "hello", "values": {}, "sequence": 1 }, ]), job_status = json.dumps({ "date_tz":str(now_tz.date() - timedelta(days=1)), "tasks": [ { "instance": 1, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow() - timedelta(days=1)), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": True }, { "instance": 2, "order": 0, "event": "JOB_END", "utc":str(datetime.utcnow() - timedelta(days=1)), "script": "hello", "hour": 0, "stdout":"", "stderr": "", "done": True } ] }), worker_uid = "OTHER_WORKER", worker_utm = utc_milliseconds() - WORKER_LOOKBACK_EXPIRE, job_utm = test_job_utm(0, 1) )