コード例 #1
0
 def testSlotParents(self):
     self.assertEquals(Slot("2014").parents(), set())
     self.assertEquals(Slot("201412").parents(), set([Slot("2014")]))
     self.assertEquals(
         Slot("20141230").parents(), set([Slot("201412"),
                                          Slot("2014")]))
     self.assertEquals(
         Slot("2014123010").parents(),
         set([Slot("20141230"),
              Slot("201412"),
              Slot("2014")]))
コード例 #2
0
 def testSlotChildren(self):
     self.assertEquals(
         Slot("2014").children(),
         set([Slot("2014" + format(i + 1, "02")) for i in range(12)]))
     self.assertEquals(
         Slot("201412").children(),
         set([Slot("201412" + format(i + 1, "02")) for i in range(31)]))
     self.assertEquals(
         Slot("20141201").children(),
         set([Slot("20141201" + format(i, "02")) for i in range(24)]))
コード例 #3
0
    def get_max_slot(self):
        if self._maxslot is None:
            self._open()

            # find smallest year
            year = [
                int(_yregex.search(s.name).group('val'))
                for s in self._bucket.list(self.prefix, '/')
            ]
            if len(year) == 0:
                raise Exception("repository empty or not consistent (year)")
            year = format(max(year), "04")

            # find smallest month
            month = [
                int(_mdhregex.search(s.name).group('val'))
                for s in self._bucket.list(self.prefix + year + '/', '/')
            ]
            if len(month) == 0:
                raise Exception("repository empty or not consistent (month)")
            month = format(max(month), "02")

            # find smallest day
            day = [
                int(_mdhregex.search(s.name).group('val'))
                for s in self._bucket.list(
                    self.prefix + year + '/' + month + '/', '/')
            ]
            if len(day) == 0:
                raise Exception("repository empty or not consistent (day)")
            day = format(max(day), "02")

            # find smallest hour
            hour = [
                int(_mdhregex.search(s.name).group('val'))
                for s in self._bucket.list(
                    self.prefix + year + '/' + month + '/' + day + '/', '/')
            ]
            if len(hour) == 0:
                raise Exception("repository empty or not consistent (hour)")
            hour = format(max(hour), "02")

            self._maxslot = Slot(year + month + day + hour)
            logging.debug("Biggest slot in repository is " +
                          str(self._maxslot))
        return self._maxslot
コード例 #4
0
 def testSlotAdd(self):
     self.assertEquals(Slot("2014") + 1, Slot("2015"))
     self.assertEquals(Slot("2014") - 1, Slot("2013"))
     self.assertEquals(Slot("201401") + 1, Slot("201402"))
     self.assertEquals(Slot("201401") - 1, Slot("201312"))
     self.assertEquals(Slot("201412") + 1, Slot("201501"))
     self.assertEquals(Slot("20141201") + 1, Slot("20141202"))
     self.assertEquals(Slot("20141201") - 1, Slot("20141130"))
     self.assertEquals(Slot("20141231") + 1, Slot("20150101"))
     self.assertEquals(Slot("2014120100") + 1, Slot("2014120101"))
     self.assertEquals(Slot("2014120100") - 1, Slot("2014113023"))
     self.assertEquals(Slot("2014123123") + 1, Slot("2015010100"))
コード例 #5
0
 def testSlotChildrenEnd(self):
     self.assertEquals(Slot("2014").children_end(), Slot("201412"))
     self.assertEquals(Slot("201412").children_end(), Slot("20141231"))
     self.assertEquals(Slot("20141230").children_end(), Slot("2014123023"))
     self.assertIsNone(Slot("2014123010").children_end())
コード例 #6
0
 def testSlotChildrenStart(self):
     self.assertEquals(Slot("2014").children_start(), Slot("201401"))
     self.assertEquals(Slot("201412").children_start(), Slot("20141201"))
     self.assertEquals(
         Slot("20141230").children_start(), Slot("2014123000"))
     self.assertIsNone(Slot("2014123010").children_start())
コード例 #7
0
 def testSlotParent(self):
     self.assertIsNone(Slot("2014").parent())
     self.assertEquals(Slot("201412").parent(), Slot("2014"))
     self.assertEquals(Slot("20141230").parent(), Slot("201412"))
     self.assertEquals(Slot("2014123010").parent(), Slot("20141230"))
コード例 #8
0
    def testSlotComponents(self):
        slot = Slot("2014")
        self.assertEquals(slot.slot, "2014")
        self.assertEquals(slot.year(), 2014)
        self.assertIsNone(slot.month())
        self.assertIsNone(slot.day())
        self.assertIsNone(slot.hour())

        slot = Slot("201412")
        self.assertEquals(slot.slot, "201412")
        self.assertEquals(slot.year(), 2014)
        self.assertEquals(slot.month(), 12)
        self.assertIsNone(slot.day())
        self.assertIsNone(slot.hour())

        slot = Slot("20141230")
        self.assertEquals(slot.slot, "20141230")
        self.assertEquals(slot.year(), 2014)
        self.assertEquals(slot.month(), 12)
        self.assertEquals(slot.day(), 30)
        self.assertIsNone(slot.hour())

        slot = Slot("2014123010")
        self.assertEquals(slot.slot, "2014123010")
        self.assertEquals(slot.year(), 2014)
        self.assertEquals(slot.month(), 12)
        self.assertEquals(slot.day(), 30)
        self.assertEquals(slot.hour(), 10)
コード例 #9
0
 def testParseSlot(self):
     repo = DummyS3Repository("s3://bucket/prefix")
     self.assertEquals(parseSlotRange(":2001", repo),
                       set([Slot("2000"), Slot("2001")]))
     self.assertEquals(parseSlotRange(":200002", repo),
                       set([Slot("200001"), Slot("200002")]))
     self.assertEquals(parseSlotRange(":20000102", repo),
                       set([Slot("20000101"),
                            Slot("20000102")]))
     self.assertEquals(parseSlotRange(":2000010101", repo),
                       repo.get_min_slot().rangeto("2000010101"))
     self.assertEquals(parseSlotRange("2099:", repo),
                       set([Slot("2099"), Slot("2100")]))
     self.assertEquals(parseSlotRange("210011:", repo),
                       set([Slot("210011"), Slot("210012")]))
     self.assertEquals(parseSlotRange("21001230:", repo),
                       set([Slot("21001230"),
                            Slot("21001231")]))
     self.assertEquals(parseSlotRange("2100123122:", repo),
                       Slot("2100123122").rangeto(repo.get_max_slot()))
     self.assertEquals(parseSlotRange(":", repo),
                       repo.get_min_slot().rangeto(repo.get_max_slot()))
コード例 #10
0
 def get_max_slot(self):
     return Slot("2100123123")
コード例 #11
0
 def get_min_slot(self):
     return Slot("2000010100")
コード例 #12
0
    def testRangeTo(self):
        # basic tests
        self.assertEquals(Slot("2014").rangeto("2014"), set([Slot("2014")]))
        self.assertEquals(
            Slot("2014").rangeto("2016"),
            set([Slot("2014"), Slot("2015"),
                 Slot("2016")]))
        self.assertEquals(
            Slot("201401").rangeto("201403"),
            set([Slot("201401"),
                 Slot("201402"),
                 Slot("201403")]))
        self.assertEquals(
            Slot("20140101").rangeto("20140103"),
            set([Slot("20140101"),
                 Slot("20140102"),
                 Slot("20140103")]))
        self.assertEquals(
            Slot("2014010100").rangeto("2014010102"),
            set([Slot("2014010100"),
                 Slot("2014010101"),
                 Slot("2014010102")]))
        self.assertEquals(
            Slot("20141201").rangeto("20150101"),
            set([Slot("201412"), Slot("20150101")]))

        # reverse order
        self.assertEquals(
            Slot("2016").rangeto("2014"),
            Slot("2014").rangeto("2016"))
        self.assertEquals(
            Slot("201401").rangeto("201403"),
            Slot("201403").rangeto("201401"))
        self.assertEquals(
            Slot("20140101").rangeto("20140103"),
            Slot("20140103").rangeto("20140101"))
        self.assertEquals(
            Slot("2014010100").rangeto("2014010102"),
            Slot("2014010102").rangeto("2014010100"))

        # entire parent is covered - should simplify
        self.assertEquals(
            Slot("201401").rangeto("201412"), set([Slot("2014")]))
        self.assertEquals(
            Slot("20141201").rangeto("20141231"), set([Slot("201412")]))
        self.assertEquals(
            Slot("2014120100").rangeto("2014120123"), set([Slot("20141201")]))

        # across different parents
        self.assertEquals(
            Slot("201311").rangeto("201402"),
            set([
                Slot("201311"),
                Slot("201312"),
                Slot("201401"),
                Slot("201402")
            ]))
        self.assertEquals(
            Slot("201311").rangeto("201502"),
            set([
                Slot("201311"),
                Slot("201312"),
                Slot("2014"),
                Slot("201501"),
                Slot("201502")
            ]))
        self.assertEquals(
            Slot("201311").rangeto("201602"),
            set([
                Slot("201311"),
                Slot("201312"),
                Slot("2014"),
                Slot("2015"),
                Slot("201601"),
                Slot("201602")
            ]))
        self.assertEquals(
            Slot("20131129").rangeto("20140202"),
            set([
                Slot("20131129"),
                Slot("20131130"),
                Slot("201312"),
                Slot("201401"),
                Slot("20140201"),
                Slot("20140202")
            ]))

        # different sizes
        self.assertEquals(
            Slot("2014").rangeto("201502"),
            Slot("201401").rangeto("201502"))
        self.assertEquals(
            Slot("2014").rangeto("201502"),
            Slot("201502").rangeto("2014"))
        self.assertEquals(
            Slot("2014").rangeto("2017010100"),
            Slot("2014010100").rangeto("2017010100"))
コード例 #13
0
ファイル: slots_test.py プロジェクト: SCH-CISM/timberslide
    def testSlotComponents(self):
        slot = Slot("2014")
        self.assertEquals(slot.slot, "2014")
        self.assertEquals(slot.year(), 2014)
        self.assertIsNone(slot.month())
        self.assertIsNone(slot.day())
        self.assertIsNone(slot.hour())

        slot = Slot("201412")
        self.assertEquals(slot.slot, "201412")
        self.assertEquals(slot.year(), 2014)
        self.assertEquals(slot.month(), 12)
        self.assertIsNone(slot.day())
        self.assertIsNone(slot.hour())

        slot = Slot("20141230")
        self.assertEquals(slot.slot, "20141230")
        self.assertEquals(slot.year(), 2014)
        self.assertEquals(slot.month(), 12)
        self.assertEquals(slot.day(), 30)
        self.assertIsNone(slot.hour())

        slot = Slot("2014123010")
        self.assertEquals(slot.slot, "2014123010")
        self.assertEquals(slot.year(), 2014)
        self.assertEquals(slot.month(), 12)
        self.assertEquals(slot.day(), 30)
        self.assertEquals(slot.hour(), 10)
コード例 #14
0
 def testPrefix(self):
     repo = S3Repository("s3://bucket-name/prefix1/prefix2/")
     self.assertEquals(repo.get_slot_prefix(Slot("2014")), "prefix1/prefix2/2014/")
     self.assertEquals(repo.get_slot_prefix(Slot("201401")), "prefix1/prefix2/2014/01/")
     self.assertEquals(repo.get_slot_prefix(Slot("20140102")), "prefix1/prefix2/2014/01/02/")
     self.assertEquals(repo.get_slot_prefix(Slot("2014010212")), "prefix1/prefix2/2014/01/02/12/")