def datastore(datastore_connection, filestore):
    global test_file, file_res_list
    ds = datastore_connection
    try:
        create_users(ds)
        # noinspection PyUnusedLocal
        for _f in range(NUM_FILES):
            f = random_model_obj(File)
            if test_file is None:
                test_file = f
            ds.file.save(f.sha256, f)

            filestore.put(f.sha256, f.sha256)

            # noinspection PyUnusedLocal
            for _r in range(random.randint(1, 3)):
                r = random_model_obj(Result)
                r.sha256 = f.sha256
                file_res_list.append(r.build_key())
                ds.result.save(r.build_key(), r)

        ds.file.commit()
        ds.result.commit()
        yield ds
    finally:
        wipe_users(ds)
        ds.file.wipe()
        ds.result.wipe()
        for key in file_res_list:
            filestore.delete(key[:64])
def datastore(datastore_connection):
    global user_list
    ds = datastore_connection
    try:
        create_users(ds)

        data = {
            'alert': [],
            'error': [],
            'search': [],
            'signature': [],
            'submission': [],
        }
        for x in range(NUM_FAVS):
            f = random_model_obj(Favorite)
            f.name = f"test_{x+1}"
            for key in data:
                data[key].append(f)

        ds.user_favorites.save('admin', data)
        ds.user_favorites.save('user', data)

        for x in range(NUM_USERS):
            u = random_model_obj(User)
            u.uname = f"test_{x+1}"
            ds.user.save(u.uname, u)
            ds.user_favorites.save(u.uname, data)
            ds.user_avatar.save(u.uname, AVATAR)
            user_list.append(u.uname)

        yield ds
    finally:
        wipe_users(ds)
예제 #3
0
def datastore(datastore_connection):
    ds = datastore_connection
    try:
        create_users(ds)

        for _ in range(NUM_ITEMS):
            f = random_model_obj(File)
            f_hash_list.append(f.sha256)
            ds.file.save(f.sha256, f)

        for x in range(NUM_ITEMS):
            a = random_model_obj(Alert)
            a.file.sha256 = f_hash_list[x]
            ds.alert.save(a.alert_id, a)

        for x in range(NUM_ITEMS):
            r = random_model_obj(Result)
            r.sha256 = f_hash_list[x]
            ds.result.save(r.build_key(), r)

        ds.alert.commit()
        ds.file.commit()
        ds.submission.commit()

        yield ds
    finally:
        ds.alert.wipe()
        ds.file.wipe()
        ds.submission.wipe()
        wipe_users(ds)
예제 #4
0
 def datastore(datastore_connection, filestore):
     ds = datastore_connection
     try:
         random_data.create_heuristics(ds, heuristics_count=10)
         random_data.create_services(ds)
         random_data.create_signatures(ds)
         random_data.create_users(ds)
         random_data.create_workflows(ds)
         submissions = []
         for _ in range(2):
             submissions.append(random_data.create_submission(
                 ds, filestore))
         random_data.create_alerts(ds,
                                   alert_count=10,
                                   submission_list=submissions)
         yield ds
     finally:
         # Cleanup test data
         random_data.wipe_alerts(ds)
         random_data.wipe_heuristics(ds)
         random_data.wipe_services(ds)
         random_data.wipe_signatures(ds)
         random_data.wipe_submissions(ds, filestore)
         random_data.wipe_users(ds)
         random_data.wipe_workflows(ds)
예제 #5
0
def datastore(datastore_connection, filestore):
    ds = datastore_connection
    try:
        create_users(ds)
        create_services(ds)

        for _ in range(NUM_FILES):
            f = random_model_obj(File)
            ds.file.save(f.sha256, f)
            file_hashes.append(f.sha256)
            filestore.put(f.sha256, f.sha256)

        ds.file.commit()
        yield ds
    finally:
        # Cleanup Elastic
        ds.file.wipe()
        wipe_services(ds)
        wipe_users(ds)

        # Cleanup Minio
        for f in file_hashes:
            filestore.delete(f)

        # Cleanup Redis
        nq.delete()
        iq.delete()
예제 #6
0
def datastore(datastore_connection):
    ds = datastore_connection
    try:
        create_users(ds)

        for x in range(TEST_RESULTS):
            f = random_model_obj(File)
            ds.file.save(f.sha256, f)
            file_list.append(f.sha256)
        ds.file.commit()

        for x in range(TEST_RESULTS):
            e = random_model_obj(Error)
            e.sha256 = file_list[x]
            ds.error.save(e.build_key(), e)
            error_key_list.append(e.build_key())
        ds.error.commit()

        for x in range(TEST_RESULTS):
            r = random_model_obj(Result)
            r.sha256 = file_list[x]
            ds.result.save(r.build_key(), r)
            result_key_list.append(r.build_key())
        ds.result.commit()
        yield ds
    finally:
        ds.error.wipe()
        ds.file.wipe()
        ds.result.wipe()
        wipe_users(ds)
예제 #7
0
def datastore(datastore_connection):
    try:
        create_users(datastore_connection)
        create_heuristics(datastore_connection)
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_heuristics(datastore_connection)
예제 #8
0
def datastore(datastore_connection, filestore):
    try:
        create_users(datastore_connection)
        create_submission(datastore_connection, filestore)
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_submissions(datastore_connection, filestore)
예제 #9
0
def datastore(datastore_connection):
    try:
        create_users(datastore_connection)
        create_services(datastore_connection)
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_services(datastore_connection)
예제 #10
0
def purge_data(ds, fs):
    wipe_alerts(ds)
    wipe_heuristics(ds)
    wipe_services(ds)
    wipe_signatures(ds)
    wipe_submissions(ds, fs)
    wipe_users(ds)
    wipe_workflows(ds)
예제 #11
0
def datastore(datastore_connection, filestore):
    global submission
    try:
        create_users(datastore_connection)
        submission = create_submission(datastore_connection, filestore)
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_submissions(datastore_connection, filestore)
        sq.delete()
예제 #12
0
def datastore(datastore_connection, filestore):
    try:
        create_users(datastore_connection)

        for _ in range(NUM_SUBMISSIONS):
            create_submission(datastore_connection, filestore)
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_submissions(datastore_connection, filestore)
예제 #13
0
def datastore(datastore_connection):
    ds = datastore_connection
    try:
        create_users(ds)
        signatures.extend(create_signatures(ds))
        ds.signature.commit()

        for _ in range(TEST_SIZE):
            f = random_model_obj(File)
            ds.file.save(f.sha256, f)
            file_list.append(f.sha256)
        ds.file.commit()

        for x in range(TEST_SIZE):
            a = random_model_obj(Alert)
            a.file.sha256 = file_list[x]
            ds.alert.save(a.alert_id, a)
        ds.alert.commit()

        for x in range(TEST_SIZE):
            r = random_model_obj(Result)
            r.sha256 = file_list[x]
            ds.result.save(r.build_key(), r)
        ds.result.commit()

        for x in range(TEST_SIZE):
            s = random_model_obj(Submission)
            for f in s.files:
                f.sha256 = file_list[x]
            ds.submission.save(s.sid, s)
        ds.submission.commit()

        for x in range(TEST_SIZE):
            h = random_model_obj(Heuristic)
            h.heur_id = f"AL_TEST_{x}"
            ds.heuristic.save(h.heur_id, h)
        ds.heuristic.commit()

        for _ in range(TEST_SIZE):
            w_id = get_random_id()
            w = random_model_obj(Workflow)
            ds.workflow.save(w_id, w)
        ds.workflow.commit()

        yield ds
    finally:
        ds.alert.wipe()
        ds.file.wipe()
        ds.result.wipe()
        ds.signature.wipe()
        ds.submission.wipe()
        ds.heuristic.wipe()
        ds.workflow.wipe()
        wipe_users(ds)
예제 #14
0
def datastore(datastore_connection):
    global test_submission
    try:
        create_users(datastore_connection)

        test_submission = random_model_obj(Submission)
        datastore_connection.submission.save(test_submission.sid,
                                             test_submission)
        datastore_connection.submission.commit()
        yield datastore_connection
    finally:
        datastore_connection.submission.wipe()
        wipe_users(datastore_connection)
예제 #15
0
def datastore(datastore_connection, filestore):
    try:
        create_users(datastore_connection)
        submission = create_submission(datastore_connection, filestore)
        alert = random_model_obj(Alert)
        alert.alert_id = ALERT_ID
        alert.sid = submission.sid
        datastore_connection.alert.save(ALERT_ID, alert)
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_submissions(datastore_connection, filestore)
        datastore_connection.alert.delete(ALERT_ID)
예제 #16
0
def datastore(datastore_connection):
    try:
        global test_error

        create_users(datastore_connection)
        for _ in range(NUM_ERRORS):
            e = random_model_obj(Error)
            if test_error is None:
                test_error = e
            datastore_connection.error.save(e.build_key(), e)
        datastore_connection.error.commit()
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        datastore_connection.error.wipe()
예제 #17
0
def datastore(datastore_connection):
    try:
        create_users(datastore_connection)
        create_services(datastore_connection)

        for _ in range(NUM_WORKFLOWS):
            workflow = random_model_obj(Workflow)
            workflow_list.append(workflow.workflow_id)
            datastore_connection.workflow.save(workflow.workflow_id, workflow)

        datastore_connection.workflow.commit()
        yield datastore_connection
    finally:
        wipe_users(datastore_connection)
        wipe_services(datastore_connection)
        datastore_connection.workflow.wipe()
def cleanup(ds, fs):
    wipe_users(ds)
    wipe_submissions(ds, fs)
    wipe_alerts(ds)
예제 #19
0
def purge_alert(ds, fs):
    wipe_users(ds)
    wipe_submissions(ds, fs)
    ds.alert.wipe()