Exemplo n.º 1
0
def compare(proc_count=None):
    res = []
    labels = []
    adapters = []

    if not proc_count:
        proc_count = int(MAX_PROCESSES / 2)

    for t, adapter_and_test_id in dict(request.query).iteritems():
        adapter, test_id = tuple(adapter_and_test_id.split('|'))
        atr = adapter_factory(adapter)
        test_name = atr.get_test_name_by_id(test_id)
        if not test_name:
            abort(404, "Test with id %s not found" % str(test_id))

        res.append(atr.get_result_by_processes(test_id, proc_count))
        labels.append("%s (%s) %d proc" % (adapter, test_name, proc_count))
        adapters.append("%s (%s)" % (adapter, test_id))

    return prepare_template('compare',
                            json_data=res,
                            labels=dumps(labels),
                            current_proc_count=proc_count,
                            max_proc=MAX_PROCESSES,
                            graph_title="Compare %s" % ', '.join(adapters))
Exemplo n.º 2
0
def update_users(params):
    user_id = params['user_id']
    db_adapter = params['db_adapter']

    start = time.time()
    is_deleted = bool(random.randint(0, 1))

    adapter = adapter_factory(db_adapter)
    adapter.update_user(user_id, {"is_deleted": is_deleted})

    return time.time() - start
    def run(self, test_name=None, db_adapter=None):

        if db_adapter is None:
            db_adapter = DEFAULT_DATABASE_ADAPTER
        if test_name is None:
            test_name = '_'.join([db_adapter, datetime.datetime.now().strftime("%Y-%m-%d %H:%M")])

        print ''.join(['Running "', test_name, '" test'])
        print 'Prepare database'

        adapter = adapter_factory(db_adapter)
        adapter.prepare_db()
        test_id = adapter.create_new_test(test_name)

        print ''
        print 'Create user documents'

        pool = Pool(processes=10)
        params = [{'user_id': i, 'docs_per_user': DOCS_PER_USER, 'db_adapter': db_adapter}
                  for i in range(1, USERS_COUNT + 1)]

        start = time.time()
        try:
            pool.map(create_users, params)
            print 'Full time:', time.time() - start
        finally:
            pool.terminate()
        del pool

        print 'OK! Users were created!'
        print ''

        for i in range(1, MAX_PROCESSES + 1):
            print 'Run test with %d proceses' % i
            pool = Pool(processes=i)
            params = [{'user_id': j, 'db_adapter': db_adapter} for j in range(1, USERS_COUNT + 1)]
            start = time.time()
                
            try:
                res = pool.map(update_users, params)
                full_time = time.time() - start
            finally:
                pool.terminate()
            del pool

            print 'Test is finished! Save results'
            print ''

            adapter.save_results(test_id, res, i)

            print 'Full time:', full_time
            print ''

        print 'Finish!'
def update_users(params):
    user_id = params['user_id']
    db_adapter = params['db_adapter']

    start = time.time()
    is_deleted = bool(random.randint(0, 1))

    adapter = adapter_factory(db_adapter)
    adapter.update_user(user_id, {"is_deleted": is_deleted})

    return time.time() - start
Exemplo n.º 5
0
    def make(self, test_name, report_dir, db_adapter):

        if db_adapter is None:
            db_adapter = DEFAULT_DATABASE_ADAPTER
        if report_dir is None:
            report_dir = CSV_REPORTS_DEFAULT_DIR

        adapter = adapter_factory(db_adapter)

        test_id = None

        tests = adapter.get_available_tests()

        for v in tests:
            if (test_name is None) and ((test_id is None) or
                                        (test_id > v['id'])):
                test_id = v['id']
                test_name = v['name']
            elif test_name == v['name']:
                test_id = v['id']

        if test_id is None:
            raise Exception("Undefined test name")

        csv_path = os.path.join(
            report_dir, 'result-%s %s.csv' %
            (str(db_adapter), str(datetime.datetime.now())))
        print "Creating csv report for test '%s' (%s)" % (test_name, csv_path)

        result = []
        for i in xrange(1, MAX_PROCESSES + 1):
            res = adapter.get_result_by_processes(test_id, i)
            result.append([str(v[1]) for v in res])

        with open(csv_path, 'w+') as f:
            writer = csv.writer(f)
            writer.writerow([
                ''.join(['proc', str(i)]) for i in range(1, MAX_PROCESSES + 1)
            ])

            for i in xrange(USERS_COUNT):
                tmp_lst = []

                for v in result:
                    try:
                        tmp_lst.append(v[i])
                    except IndexError:
                        tmp_lst.append("")
                writer.writerow(tmp_lst)

        print 'Finish!'
def result(adapter, test_id):
    atr = adapter_factory(adapter)
    res = []
    proc_count = [1]

    if MAX_PROCESSES > 2:
        middle_proc_count = int(MAX_PROCESSES / 2)
        if middle_proc_count > 1:
            proc_count.append(middle_proc_count)
        proc_count.append(MAX_PROCESSES)

    test_name = atr.get_test_name_by_id(test_id)
    if not test_name:
        abort(404, "Test with id %s not found" % str(test_id))

    for i in proc_count:
        res.append(atr.get_result_by_processes(test_id, i))
    return prepare_template('result', json_data=res, graph_title=': '.join([atr.get_name(), test_name]),
                            labels=['proc count: %s' % i for i in proc_count])
def create_users(params):
    start = time.time()

    user_id = params['user_id']
    docs_per_user = params['docs_per_user']
    db_adapter = params['db_adapter']
    is_deleted = bool(random.randint(0, 1))

    new_users = []

    for i in xrange(docs_per_user):
        name = 'Document %d for User %d' % (i, user_id)
        email = 'doc%d@user%d.com' % (i, user_id)
        new_users.append({'user_id': user_id, 'name': name, 'email': email, 'is_deleted': is_deleted})

    adapter = adapter_factory(db_adapter)
    adapter.create_users(new_users)

    return time.time() - start
Exemplo n.º 8
0
def result(adapter, test_id):
    atr = adapter_factory(adapter)
    res = []
    proc_count = [1]

    if MAX_PROCESSES > 2:
        middle_proc_count = int(MAX_PROCESSES / 2)
        if middle_proc_count > 1:
            proc_count.append(middle_proc_count)
        proc_count.append(MAX_PROCESSES)

    test_name = atr.get_test_name_by_id(test_id)
    if not test_name:
        abort(404, "Test with id %s not found" % str(test_id))

    for i in proc_count:
        res.append(atr.get_result_by_processes(test_id, i))
    return prepare_template('result',
                            json_data=res,
                            graph_title=': '.join([atr.get_name(), test_name]),
                            labels=['proc count: %s' % i for i in proc_count])
def compare(proc_count=None):
    res = []
    labels = []
    adapters = []

    if not proc_count:
        proc_count = int(MAX_PROCESSES / 2)

    for t, adapter_and_test_id in dict(request.query).iteritems():
        adapter, test_id = tuple(adapter_and_test_id.split('|'))
        atr = adapter_factory(adapter)
        test_name = atr.get_test_name_by_id(test_id)
        if not test_name:
            abort(404, "Test with id %s not found" % str(test_id))

        res.append(atr.get_result_by_processes(test_id, proc_count))
        labels.append("%s (%s) %d proc" % (adapter, test_name, proc_count))
        adapters.append("%s (%s)" % (adapter, test_id))

    return prepare_template('compare', json_data=res, labels=dumps(labels),
                            current_proc_count=proc_count, max_proc=MAX_PROCESSES,
                            graph_title="Compare %s" % ', '.join(adapters))
Exemplo n.º 10
0
def create_users(params):
    start = time.time()

    user_id = params['user_id']
    docs_per_user = params['docs_per_user']
    db_adapter = params['db_adapter']
    is_deleted = bool(random.randint(0, 1))

    new_users = []

    for i in xrange(docs_per_user):
        name = 'Document %d for User %d' % (i, user_id)
        email = 'doc%d@user%d.com' % (i, user_id)
        new_users.append({
            'user_id': user_id,
            'name': name,
            'email': email,
            'is_deleted': is_deleted
        })

    adapter = adapter_factory(db_adapter)
    adapter.create_users(new_users)

    return time.time() - start
Exemplo n.º 11
0
    def run(self, test_name=None, db_adapter=None):

        if db_adapter is None:
            db_adapter = DEFAULT_DATABASE_ADAPTER
        if test_name is None:
            test_name = '_'.join([
                db_adapter,
                datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
            ])

        print ''.join(['Running "', test_name, '" test'])
        print 'Prepare database'

        adapter = adapter_factory(db_adapter)
        adapter.prepare_db()
        test_id = adapter.create_new_test(test_name)

        print ''
        print 'Create user documents'

        pool = Pool(processes=10)
        params = [{
            'user_id': i,
            'docs_per_user': DOCS_PER_USER,
            'db_adapter': db_adapter
        } for i in range(1, USERS_COUNT + 1)]

        start = time.time()
        try:
            pool.map(create_users, params)
            print 'Full time:', time.time() - start
        finally:
            pool.terminate()
        del pool

        print 'OK! Users were created!'
        print ''

        for i in range(1, MAX_PROCESSES + 1):
            print 'Run test with %d proceses' % i
            pool = Pool(processes=i)
            params = [{
                'user_id': j,
                'db_adapter': db_adapter
            } for j in range(1, USERS_COUNT + 1)]
            start = time.time()

            try:
                res = pool.map(update_users, params)
                full_time = time.time() - start
            finally:
                pool.terminate()
            del pool

            print 'Test is finished! Save results'
            print ''

            adapter.save_results(test_id, res, i)

            print 'Full time:', full_time
            print ''

        print 'Finish!'