示例#1
0
def test_python_operator():
    dag = DAG(dag_id='foo', start_date=datetime.now())
    doit = PythonOperator(task_id='doit',
                          provide_context=True,
                          python_callable=python_method,
                          dag=dag)
    ti = TaskInstance(task=doit, execution_date=datetime.now())
    doit.execute(ti.get_template_context())
def test_sort_data(test_dag):
    task = PythonOperator(task_id='sort_data',
                          python_callable=sort_data,
                          dag=test_dag)
    test_dag.clear()
    ti = TaskInstance(task=task, execution_date=datetime.now())
    task.execute(ti.get_template_context())
    assert "data_sorted.csv" in os.listdir('tmp')
def test_preprocess_data(test_dag):
    task = PythonOperator(task_id='preprocess_data',
                          python_callable=preprocess_data,
                          op_kwargs={'path_cats': 'Data/US_category_id.json'},
                          dag=test_dag)
    test_dag.clear()
    ti = TaskInstance(task=task, execution_date=datetime.now())
    task.execute(ti.get_template_context())
    assert "data_cats.csv" in os.listdir('tmp')
示例#4
0
def test_filter_data(test_dag):
    task = PythonOperator(
        task_id='filter_data',
        python_callable=filter_data,
        op_kwargs={'path_vids': 'Data/USvideos.csv.zip', 'date': '17.14.11'},
        dag=test_dag)
    test_dag.clear()
    ti = TaskInstance(task=task, execution_date=datetime.now())
    task.execute(ti.get_template_context())
    assert "data_vids.csv" in os.listdir('tmp')
示例#5
0
def test_store_data(test_dag):
    task = PythonOperator(
        task_id='store_data',
        python_callable=store_data,
        op_kwargs={'path_output': 'Data/top_10_trendy_cats.csv'},
        dag=test_dag)
    test_dag.clear()
    ti = TaskInstance(task=task, execution_date=datetime.now())
    task.execute(ti.get_template_context())
    assert "top_10_trendy_cats.csv" in os.listdir('Data')
示例#6
0
def run_tasks(**kwargs):

    # select users from BQ table for which the events are not loaded yet
    query = '''
            select distinct_id 
            from mixpanel.users
            where events_loaded = False        
            '''

    credentials = service_account.Credentials.from_service_account_file(
        GCLOUD_JSON_KEY)

    df = pd.read_gbq(query,
                     project_id=GCLOUD_PROJECT_ID,
                     credentials=credentials)
    distinct_ids_max = 100
    dids = df['distinct_id'].to_list()

    # split distinct_ids list into sublists for using it in threads
    chunks_dids = [
        dids[x:x + distinct_ids_max]
        for x in range(0, len(dids), distinct_ids_max)
    ]

    logging.warning(len(chunks_dids))

    for job_number in range(len(chunks_dids)):

        upload_events_to_bq = PythonOperator(
            task_id='upload_events_bq_{}'.format(str(job_number)),
            python_callable=get_events,
            provide_context=True,
            op_kwargs={
                "start": last_upload,
                "end": last_date,
                "num": chunks_dids[job_number]
            },
            dag=dag)

        change_events = PythonOperator(
            task_id='change_flag_{}'.format(str(job_number)),
            python_callable=change_events_fl,
            provide_context=True,
            op_kwargs={"num": chunks_dids[job_number]},
            dag=dag)

        upload_events_to_bq.execute(kwargs)
        change_events.execute(kwargs)

        upload_events_to_bq >> change_events

    Variable.set("last_update_events", last_date)
示例#7
0
    def test_android_runner_task_install_android_apks(self):
        device_serial = '192.168.31.223:5555'
        app_id = 'com.chi.ssetest'
        release_version = 'release-20191016-0.0.3'

        with DAG(dag_id='any_dag', start_date=datetime.now()) as dag:

            def push_function(**kwargs):
                release_apk = ReleaseFile()
                release_apk.name = 'app-debug.apk'
                release_apk.type = 'application/vnd.android.package-archive'
                release_apk.url = 'https://github.com/stocksdktest/AndroidTestRunner/releases/download/release-20191016-0.0.3/app-debug.apk'
                release_testing = ReleaseFile()
                release_testing.name = 'app-debug-androidTest.apk'
                release_testing.type = 'application/vnd.android.package-archive'
                release_testing.url = 'https://github.com/stocksdktest/AndroidTestRunner/releases/download/release-20191016-0.0.3/app-debug-androidTest.apk'
                kwargs['ti'].xcom_push(key='android_release',
                                       value=[release_apk, release_testing])

            release_provider = PythonOperator(task_id='push_task',
                                              python_callable=push_function,
                                              provide_context=True)
            android_runner = AndroidRunnerOperator(task_id='android_runner',
                                                   provide_context=True,
                                                   apk_id=app_id,
                                                   apk_version=release_version,
                                                   target_device=device_serial,
                                                   runner_conf=RunnerConfig())
            release_provider >> android_runner

            execution_date = datetime.now()

            provider_instance = TaskInstance(task=release_provider,
                                             execution_date=execution_date)
            release_provider.execute(provider_instance.get_template_context())

            runner_instance = TaskInstance(task=android_runner,
                                           execution_date=execution_date)
            context = runner_instance.get_template_context()
            context['run_id'] = 'fake-run'
            android_runner.pre_execute(context)

            main_apk_version = get_app_version(device_serial, app_id)
            testing_apk_version = get_app_version(device_serial,
                                                  '%s.test' % app_id)

            self.assertEqual(release_version, main_apk_version,
                             'main app version not match')
            self.assertEqual(release_version, testing_apk_version,
                             'testing app version not match')
示例#8
0
 def test_execute(self):
     dag = DAG(dag_id='example', start_date=datetime.now())
     task = PythonOperator(python_callable=ret_hello,
                           task_id='test_python',
                           dag=dag)
     ti = TaskInstance(task=task, execution_date=datetime.now())
     result = task.execute(ti.get_template_context())
     self.assertEqual(result, 'Hello')
示例#9
0
def test_pull_parameters_by_task(env, create_dag, create_df_task, push_xcom):
    dag = create_dag
    # df_task = create_df_task(dag)
    push_task = PythonOperator(task_id='three',
                               python_callable=push_xcom,
                               op_args=['three_value'],
                               dag=dag,
                               provide_context=True)

    push_ti = TaskInstance(task=push_task, execution_date=datetime.now())
    push_task.execute(push_ti.get_template_context())
    xcom = XCom.get_many(execution_date=push_ti.execution_date,
                         dag_ids=[dag.dag_id],
                         task_ids=[push_task.task_id])
    pprint(xcom[0])
    assert len(xcom) == 1
    assert xcom[0].value == 'three_value'
    assert False
示例#10
0
def test_pull_parameters_by_specific_key(env, create_dag, create_df_task,
                                         push_xcom_key):
    dag = create_dag
    df_task = create_df_task(dag)
    push_task = PythonOperator(task_id='two',
                               python_callable=push_xcom_key,
                               op_args=['two', 'two_value'],
                               dag=dag,
                               provide_context=True)

    push_ti = TaskInstance(task=push_task, execution_date=datetime.now())
    push_task.execute(push_ti.get_template_context())
    xcom = XCom.get_many(execution_date=push_ti.execution_date,
                         dag_ids=[dag.dag_id])
    assert len(xcom) == 1
    assert xcom[0].value == 'two_value'
    merged = df_task.merge_parameters(push_ti)
    assert merged['two-specific-key'] == 'two_value'
示例#11
0
def test_python_operator():
    test = PythonOperator(task_id="test", python_callable=lambda: "testme")
    result = test.execute(context={})
    assert result == "testme"
示例#12
0
def test_python_operator_with_context():
    test = PythonOperator(task_id="test", python_callable=next_week, provide_context=True)
    testdate = datetime.datetime(2020, 1, 1)
    result = test.execute(context={"execution_date": testdate})
    assert result == testdate + datetime.timedelta(days=7)