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()
Beispiel #2
0
  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 )
    )
Beispiel #3
0
  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()
Beispiel #4
0
  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()
Beispiel #5
0
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
Beispiel #6
0
  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 )
        )
Beispiel #8
0
  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()
    )
Beispiel #9
0
  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
        },
      ]),
    )
Beispiel #10
0
  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
                },
            ]),
        )
Beispiel #12
0
  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)
Beispiel #13
0
    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()
Beispiel #15
0
  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()
Beispiel #16
0
  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)
    )