예제 #1
0
class Test_MongoDB_Performance(TestCase):
    def setUp(self):
        """Opens connection and creates 'junk' records."""
        self.admindb = BaseMongoDB(host, username, password, tests_db,
                                   admin_db)
        self.junk = self.admindb[junk_c]
        self.results = self.admindb[results_c]
        self.junk.remove(safe=SAFE)
        for record in range(0, JUNK_RANGE):
            self.junk.insert({'_id': record, 'value': 'test_value'}, safe=SAFE)

    def tearDown(self):
        """Removes all 'junk' records."""
        self.junk.remove(safe=SAFE)
        self.admindb.close()
        del (self.junk)
        del (self.results)
        del (self.admindb)

    def save_result(self, case, time):
        """Stores results of performance tests in mongo database."""
        result = {
            'date': datetime.now(),
            'test': 'MongoDB-performance',
            'case': case,
            'result': time,
            'range': TEST_RANGE
        }
        self.results.insert(result)
예제 #2
0
 def setUp(self):
     """Opens connection and creates 'junk' records."""
     self.admindb = BaseMongoDB(host, username, password, tests_db,
                                admin_db)
     self.junk = self.admindb[junk_c]
     self.results = self.admindb[results_c]
     self.junk.remove(safe=SAFE)
     for record in range(0, JUNK_RANGE):
         self.junk.insert({'_id': record, 'value': 'test_value'}, safe=SAFE)
예제 #3
0
 def setUp(self):
     """Opens connection and creates 'junk' records."""
     self.admindb = BaseMongoDB(host, username, password, tests_db, admin_db)
     self.junk = self.admindb[junk_c]
     self.results = self.admindb[results_c]
     self.junk.remove(safe=SAFE)
     for record in range(0, JUNK_RANGE):
         self.junk.insert({"_id": record, "value": "test_value"}, safe=SAFE)
예제 #4
0
class Test_MongoDB_Performance(TestCase):
    def setUp(self):
        """Opens connection and creates 'junk' records."""
        self.admindb = BaseMongoDB(host, username, password, tests_db, admin_db)
        self.junk = self.admindb[junk_c]
        self.results = self.admindb[results_c]
        self.junk.remove(safe=SAFE)
        for record in range(0, JUNK_RANGE):
            self.junk.insert({"_id": record, "value": "test_value"}, safe=SAFE)

    def tearDown(self):
        """Removes all 'junk' records."""
        self.junk.remove(safe=SAFE)
        self.admindb.close()
        del (self.junk)
        del (self.results)
        del (self.admindb)

    def save_result(self, case, time):
        """Stores results of performance tests in mongo database."""
        result = {
            "date": datetime.now(),
            "test": "MongoDB-performance",
            "case": case,
            "result": time,
            "range": TEST_RANGE,
        }
        self.results.insert(result)

    def test_remove_ascending(self):
        """Remove test - ascending."""
        id_set = range(0, TEST_RANGE)
        S = time.time()
        for sid in id_set:
            self.junk.remove({"_id": sid}, safe=SAFE)
        D = time.time() - S
        self.save_result("remove (asc)", D)

    def test_find_ascending(self):
        """Find test - ascending."""
        id_set = range(0, TEST_RANGE)
        S = time.time()
        for sid in id_set:
            self.junk.find({"_id": sid})
        D = time.time() - S
        self.save_result("find (asc)", D)

    def test_findone_ascending(self):
        """Find_one test - ascending."""
        id_set = range(0, TEST_RANGE)
        S = time.time()
        for sid in id_set:
            self.junk.find_one({"_id": sid})
        D = time.time() - S
        self.save_result("find_one (asc)", D)

    def test_save(self):
        """Save test."""
        id_set = range(0, TEST_RANGE)
        S = time.time()
        for sid in id_set:
            record = {"_id": sid, "value": "test_junks"}
            self.junk.save(record, safe=SAFE)
        D = time.time() - S
        self.save_result("save", D)

    def test_updatemulti(self):
        """Update test (multi=True)."""
        record = {"$set": {"value": "test_junks"}}
        S = time.time()
        self.junk.update({"_id": {"$lt": TEST_RANGE}}, record, multi=True, safe=SAFE)
        D = time.time() - S
        self.save_result("update-multi", D)

    def test_update_ascending(self):
        """Update test - ascending."""
        id_set = range(0, TEST_RANGE)
        record = {"$set": {"value": "test_junks"}}
        S = time.time()
        for sid in id_set:
            self.junk.update({"_id": sid}, record, safe=SAFE)
        D = time.time() - S
        self.save_result("update (asc)", D)

    def test_insert(self):
        """Insert test."""
        id_set = range(JUNK_RANGE, JUNK_RANGE + TEST_RANGE)
        S = time.time()
        for sid in id_set:
            record = {"_id": sid, "value": "test_dumps"}
            self.junk.insert(record, safe=SAFE)
        D = time.time() - S
        self.save_result("insert", D)
예제 #5
0
def print_results():
    admindb = BaseMongoDB(host, username, password, tests_db, admin_db)
    results = admindb[results_c]

    res_table = {}

    cases = results.distinct("case")
    for case in cases:

        cur = results.find({"case": case}).sort("date", -1)
        try:
            actual_rec = cur.next()
            actual = actual_rec[u"result"]
            actual_average = actual / actual_rec[u"range"]
        except StopIteration:
            actual = 0.0
            actual_average = 0.0
            previous = 0.0
            previous_average = 0.0
        try:
            previous_rec = cur.next()
            previous = previous_rec[u"result"]
            previous_average = previous / previous_rec[u"range"]
        except StopIteration:
            previous = 0.0
            previous_average = 0.0

        cur = results.find({"case": case}).sort("result", 1)
        try:
            best_rec = cur.next()
            best = best_rec[u"result"]
            best_average = best / best_rec[u"range"]
        except StopIteration:
            best = 0.0
            best_average = 0.0

        cur = results.find({"case": case}).sort("result", -1)
        try:
            worst_rec = cur.next()
            worst = worst_rec[u"result"]
            worst_average = worst / worst_rec[u"range"]
        except:
            worst = 0.0
            worst_average = 0.0

        res_table[case] = {
            "actual": actual,
            "actual_average": actual_average,
            "previous": previous,
            "previous_average": previous_average,
            "best": best,
            "best_average": best_average,
            "worst": worst,
            "worst_average": worst_average,
        }

    admindb.close()

    print "name" + (14 * " ") + "actual  act(av)   prev    prev(av)  best    best(av)  worst   worst(av)"
    print (89 * "-")
    for case in cases:
        spaces = 18 - len(str(case))
        table = "%3.4f  %3.6f  %3.4f  %3.6f  %3.4f  %3.6f  %3.4f  %3.6f" % (
            res_table[case]["actual"],
            res_table[case]["actual_average"],
            res_table[case]["previous"],
            res_table[case]["previous_average"],
            res_table[case]["best"],
            res_table[case]["best_average"],
            res_table[case]["worst"],
            res_table[case]["worst_average"],
        )
        print str(case) + (spaces * " ") + table
예제 #6
0
def print_results():
    admindb = BaseMongoDB(host, username, password, tests_db, admin_db)
    results = admindb[results_c]

    res_table = {}

    cases = results.distinct('case')
    for case in cases:

        cur = results.find({"case": case}).sort("date", -1)
        try:
            actual_rec = cur.next()
            actual = actual_rec[u'result']
            actual_average = actual / actual_rec[u'range']
        except StopIteration:
            actual = 0.0
            actual_average = 0.0
            previous = 0.0
            previous_average = 0.0
        try:
            previous_rec = cur.next()
            previous = previous_rec[u'result']
            previous_average = previous / previous_rec[u'range']
        except StopIteration:
            previous = 0.0
            previous_average = 0.0

        cur = results.find({"case": case}).sort("result", 1)
        try:
            best_rec = cur.next()
            best = best_rec[u'result']
            best_average = best / best_rec[u'range']
        except StopIteration:
            best = 0.0
            best_average = 0.0

        cur = results.find({"case": case}).sort("result", -1)
        try:
            worst_rec = cur.next()
            worst = worst_rec[u'result']
            worst_average = worst / worst_rec[u'range']
        except:
            worst = 0.0
            worst_average = 0.0

        res_table[case] = {
            'actual': actual,
            'actual_average': actual_average,
            'previous': previous,
            'previous_average': previous_average,
            'best': best,
            'best_average': best_average,
            'worst': worst,
            'worst_average': worst_average
        }

    admindb.close()

    print "name" + (
        14 * ' '
    ) + "actual  act(av)   prev    prev(av)  best    best(av)  worst   worst(av)"
    print(89 * '-')
    for case in cases:
        spaces = 18 - len(str(case))
        table = "%3.4f  %3.6f  %3.4f  %3.6f  %3.4f  %3.6f  %3.4f  %3.6f" % (
            res_table[case]['actual'], res_table[case]['actual_average'],
            res_table[case]['previous'], res_table[case]['previous_average'],
            res_table[case]['best'], res_table[case]['best_average'],
            res_table[case]['worst'], res_table[case]['worst_average'])
        print str(case) + (spaces * ' ') + table