Ejemplo n.º 1
0
    def testMakeNameDir(self):
        d = dumpStorage.DumpStorage(self.testDir)
        # first test: Make a file of the same name and see it fail as expected
        testItem = self.testData.items()[0]
        testOoid = testItem[0]
        testPath = testItem[1][0]
        testDate = testItem[1][1]
        while True:
            head, tail = os.path.split(testPath)
            if head == tail: break
            dirPart = os.sep.join(
                (d.root, d.dailyPart(testOoid, testDate), d.indexName, head))
            try:
                shutil.rmtree(d.root)
            except:
                pass
            filePart = os.path.join(dirPart, tail)
            os.makedirs(dirPart)
            f = open(filePart, 'w')
            f.write("nothing\n")
            f.close()
            assert_raises(OSError, d.makeNameDir, testOoid)
            testPath = head
        try:
            shutil.rmtree(d.root)
        except:
            pass

        for k, v in self.testData.items():
            g, dum = d.makeNameDir(k)
            e = os.path.join(d.root, d.dailyPart(k, v[1]), d.indexName, v[0])
            assert e == g, 'Expected "%s" got "%s"' % (e, g)
Ejemplo n.º 2
0
 def testLookupOoidInDatePath(self):
     d = dumpStorage.DumpStorage(self.testDir)
     expected = {}
     count = 0
     for ooid, v in createJDS.jsonFileData.items():
         dateS = v[0]
         if 0 == count % 2:
             nd, dd = d.newEntry(
                 ooid,
                 datetime.datetime(*[int(x) for x in dateS.split('-')],
                                   tzinfo=UTC))
             expected[ooid] = dd
         elif 0 == count % 5:
             expected[ooid] = None
             pass
         else:
             nd, dd = d.newEntry(ooid)
             expected[ooid] = dd
         count += 1
         dateS = v[0]
     count = 0
     for ooid in createJDS.jsonFileData.keys():
         dateS = v[0]
         if expected[ooid]:
             exEnd = datetime.datetime(*[int(x) for x in dateS.split('-')],
                                       tzinfo=UTC)
             passDate = utc_now()
             if 0 == count % 3:
                 passDate = None
             else:
                 passDate = exEnd
             got, ignore = d.lookupOoidInDatePath(passDate, ooid)
             assert expected[ooid] == got, 'For %s: Expected %s, got %s' % (
                 ooid, expected[ooid], got)
Ejemplo n.º 3
0
 def testLookupNamePath(self):
     d = dumpStorage.DumpStorage(self.testDir)
     count = 0
     expected = {}
     for ooid, v in createJDS.jsonFileData.items():
         dateS = v[0]
         if 0 == count % 2:
             nd, dd = d.newEntry(
                 ooid,
                 datetime.datetime(*[int(x) for x in dateS.split('-')],
                                   tzinfo=UTC))
             expected[ooid] = nd
         elif 0 == count % 5:
             expected[ooid] = None
             pass
         else:
             nd, dd = d.newEntry(ooid)
             expected[ooid] = nd
         count += 1
     for ooid, v in createJDS.jsonFileData.items():
         dateS = v[0]
         testDate = datetime.datetime(*[int(x) for x in dateS.split('-')],
                                      tzinfo=UTC)
         got, ignore = d.lookupNamePath(ooid, testDate)
         assert expected[
             ooid] == got, 'For %s, expected path %s, got %s' % (
                 ooid, expected, got)
Ejemplo n.º 4
0
 def testPathToDate(self):
     d = dumpStorage.DumpStorage(self.testDir)
     testCases = [
         ([
             'blob', 'f**k', 'nigl', d.root, '20081211', d.dateName, '10',
             '09_0'
         ], [2008, 12, 11, 10, 9]),
         ([
             'blob', 'f**k', 'nigl', d.root, '20081211', d.dateName, '10',
             '09', 'wh_0'
         ], [2008, 12, 11, 10, 9]),
         ([d.root, '20081211', d.dateName, '10', '09',
           'wh_3'], [2008, 12, 11, 10, 9]),
         ([d.root, '200z1211', d.dateName, '10', '09', 'wh_3'], None),
         ([d.root, '20081g11', d.dateName, '10', '09', 'wh_3'], None),
         ([d.root, '2008121-', d.dateName, '10', '09', 'wh_3'], None),
         ([d.root, '20081211', d.dateName, '26', '09', 'wh_3'], None),
         ([d.root, '20081211', d.dateName, '10', '65', 'wh_3'], None),
         ([d.root, '20081311', d.dateName, '10', '09', 'wh_3'], None),
         ([d.root, '20081232', d.dateName, '10', '09', 'wh_3'], None),
     ]
     for (pathInfo, dateParts) in testCases:
         path = os.sep.join(pathInfo)
         if dateParts:
             expected = datetime.datetime(*dateParts, tzinfo=UTC)
             got = d.pathToDate(path)
             assert expected == got, 'Expected: %s but got %s' % (expected,
                                                                  got)
         else:
             assert_raises(ValueError, d.pathToDate, path)
Ejemplo n.º 5
0
    def testMakeDateDir(self):
        d = dumpStorage.DumpStorage(self.testDir)
        d3 = dumpStorage.DumpStorage(self.testDir, subSlotCount=3)
        # first test: Make a file of the same name as a subdir and see it fail as expected
        testItem = self.testData.items()[0][1]
        date = testItem[1]
        datePathPart = testItem[2]
        while True:
            head, tail = os.path.split(datePathPart)
            if head == tail: break
            dirPart = os.sep.join(
                (d.root, d.dailyPart('', date), d.dateName, head))
            try:
                shutil.rmtree(d.root)
            except:
                pass
            filePart = os.path.join(dirPart, tail)
            os.makedirs(dirPart)
            f = open(filePart, 'w')
            f.write("nothing\n")
            f.close()
            assert_raises(OSError, d.makeDateDir, date)
            assert_raises(OSError, d3.makeDateDir, date, 'boot')
            datePathPart = head
        try:
            shutil.rmtree(d.root)
        except:
            pass
        for k, v in self.testData.items():
            g, dum = d.makeDateDir(v[1])
            e = os.sep.join((d.root, d.dailyPart(k, v[1]), d.dateName, v[2]))

            g0, dum0 = d3.makeDateDir(v[1])
            e0 = os.sep.join(
                (d.root, d.dailyPart(k,
                                     v[1]), d.dateName, "%s_%d" % (v[2], 0)))

            g3, dum3 = d3.makeDateDir(v[1], 'boot')
            e3 = os.sep.join((d.root, d.dailyPart(k, v[1]), d.dateName, v[2],
                              "%s_%d" % ('boot', 0)))

            assert e == g, 'Expected "%s", got "%s"' % (e, g)
            assert os.path.isdir(g), 'But "%s" is not a dir' % g
            assert e0 == g0, 'Expected "%s", got "%s"' % (e0, g0)
            assert os.path.isdir(g0), 'But "%s" is not a dir' % g
            assert e3 == g3, 'Expected "%s", got "%s"' % (e3, g3)
            assert os.path.isdir(g3), 'But "%s" is not a dir' % g
Ejemplo n.º 6
0
 def testDatePath(self):
     d = dumpStorage.DumpStorage(self.testDir)
     for k, v in self.testData.items():
         g = d.datePath(v[1])[0]
         e = os.sep.join((d.root, d.dailyPart(k, v[1]), d.dateName, v[2]))
         assert e == g, 'Expected "%s", got "%s"' % (e, g)
     d = dumpStorage.DumpStorage(self.testDir, subSlotCount=3)
     curcount = 0
     for k, v in self.testData.items():
         g = d.datePath(v[1])[0]
         e = os.sep.join((d.root, d.dailyPart(k, v[1]), d.dateName,
                          "%s_%d" % (v[2], curcount)))
         #curcount = (curcount + 1) % d.subSlotCount
         assert e == g, 'Expected "%s", got "%s"' % (e, g)
     curcount = 0
     for k, v in self.testData.items():
         g = d.datePath(v[1], webheadName='boot')[0]
         e = os.sep.join((d.root, d.dailyPart(k, v[1]), d.dateName, v[2],
                          "%s_%d" % ('boot', curcount)))
         #curcount = (curcount + 1) % d.subSlotCount
         assert e == g, 'Expected "%s", got "%s"' % (e, g)
Ejemplo n.º 7
0
 def testRelativeNameParts(self):
     ooid = '12345678-dead-beef-feeb-daed2%d081225'
     expected = {
         1: ['12'],
         2: ['12', '34'],
         3: ['12', '34', '56'],
         0: ['12', '34', '56', '78']
     }
     d = dumpStorage.DumpStorage(self.testDir)
     for depth in range(4):
         tooid = ooid % (depth)
         assert expected[depth] == d.relativeNameParts(tooid)
Ejemplo n.º 8
0
 def testConstructor(self):
     for i in range(len(self.expectedCtor)):
         if i in (1, 3, 5):
             root = self.expectedTestDir
         else:
             root = self.testDir
         d = dumpStorage.DumpStorage(root, **self.ctorData[i])
         for k in self.expectedCtor[i]:
             e = self.expectedCtor[i][k]
             g = eval("d." + k)
             if type(1) == type(e):
                 assert e == g, 'At loop %d, key %s: Wanted "%0o", got "%0o"' % (
                     i, k, e, g)
             else:
                 assert e == g, 'At loop %d, key %s: Wanted "%s", got "%s"' % (
                     i, k, e, g)
Ejemplo n.º 9
0
 def testDailyPart(self):
     d = dumpStorage.DumpStorage(self.testDir)
     testData = [
         ('12345678-dead-beef-feeb-daed20081225',
          datetime.datetime(2008, 12, 25, 1, 2, 3, tzinfo=UTC), '20081225'),
         ('12345678-dead-beef-feeb-daed20081225',
          datetime.datetime(2008, 12, 26, 1, 2, 3, tzinfo=UTC), '20081226'),
         ('12345678-dead-beef-feeb-daed20081225', None, '20081225'),
         ('', datetime.datetime(2008, 12, 25, 1, 2, 3,
                                tzinfo=UTC), '20081225'),
         (None, None, None),
         ('', None, None),
     ]
     for ooid, date, expected in testData:
         if expected:
             got = d.dailyPart(ooid, date)
             assert expected == got, 'Expected "%s" but got "%s"' % (
                 expected, got)
         else:
             now = utc_now()
             expected = "%4d%02d%02d" % (now.year, now.month, now.day)
             assert expected == d.dailyPart(
                 ooid, date), 'From (%s,%s) Expected "%s" but got "%s"' % (
                     ooid, date, expected, got)
Ejemplo n.º 10
0
 def testNamePath(self):
     d = dumpStorage.DumpStorage(self.testDir)
     for k, v in self.testData.items():
         g = d.namePath(k, v[1])[0]
         e = os.sep.join((d.root, d.dailyPart(k, v[1]), d.indexName, v[0]))
         assert e == g, 'Expected "%s", got "%s"' % (e, g)
Ejemplo n.º 11
0
    def testNewEntry(self):
        # test the default case
        d = dumpStorage.DumpStorage(self.testDir)
        dateLeafSet = set()
        expectedLeafs = set(['55', '00', '20'])
        for k, v in self.testData.items():
            nd, dd = d.newEntry(k, v[1])
            dateLeafSet.add(os.path.split(dd)[1])
            assert os.path.isdir(nd)
            assert os.path.isdir(dd)
            assert os.path.islink(os.path.join(dd, k))
            e = os.path.abspath(nd)
            g = os.path.abspath(
                os.path.join(dd, os.readlink(os.path.join(dd, k))))
            assert e == g, 'Expected %s, got %s' % (e, g)
        assert expectedLeafs == dateLeafSet, 'Expected %s, got %s' % (
            expectedLeafs, dateLeafSet)

        # test the for JsonDumpStorage default
        d = dumpStorage.DumpStorage(self.testDir, subSlotCount=1)
        dateLeafSet = set()
        expectedLeafs = set(['55_0', '00_0', '20_0'])
        for k, v in self.testData.items():
            nd, dd = d.newEntry(k, v[1])
            dateLeafSet.add(os.path.split(dd)[1])
            assert os.path.isdir(nd)
            assert os.path.isdir(dd)
            assert os.path.islink(os.path.join(dd, k))
            e = os.path.abspath(nd)
            g = os.path.abspath(
                os.path.join(dd, os.readlink(os.path.join(dd, k))))
            assert e == g, 'Expected %s, got %s' % (e, g)
        assert expectedLeafs == dateLeafSet, 'Expected %s, got %s' % (
            expectedLeafs, dateLeafSet)

        # test the trailing _n case at same level
        d = dumpStorage.DumpStorage(self.testDir, subSlotCount=3)
        dateLeafSet = set()
        expectedLeafs = set(['00_0', '20_0', '55_0'])
        for k, v in self.testData.items():
            nd, dd = d.newEntry(k, v[1])
            dateLeafSet.add(os.path.split(dd)[1])
            assert os.path.isdir(nd)
            assert os.path.isdir(dd)
            assert os.path.islink(os.path.join(dd, k))
            e = os.path.abspath(nd)
            g = os.path.abspath(
                os.path.join(dd, os.readlink(os.path.join(dd, k))))
            assert e == g, 'Expected %s, got %s' % (e, g)
        assert expectedLeafs == dateLeafSet, 'Expected %s, got %s' % (
            expectedLeafs, dateLeafSet)

        # test with subdirectory further down
        d = dumpStorage.DumpStorage(self.testDir, subSlotCount=3)
        dateLeafSet = set()
        expectedLeafs = set(['wh_0', 'wh_1', 'wh_2'])
        for k, v in self.testData.items():
            nd, dd = d.newEntry(k, v[1], webheadName='wh')
            dateLeafSet.add(os.path.split(dd)[1])
            assert os.path.isdir(nd)
            assert os.path.isdir(dd)
            assert os.path.islink(os.path.join(dd, k))
            e = os.path.abspath(nd)
            g = os.path.abspath(
                os.path.join(dd, os.readlink(os.path.join(dd, k))))
            assert e == g, 'Expected %s, got %s' % (e, g)
        assert expectedLeafs == dateLeafSet, 'Expected %s, got %s' % (
            expectedLeafs, dateLeafSet)