Esempio n. 1
0
    def get_usage_for_month(self, dateobj):
        """
        Returns all C{UsageItem} for month C{dateobj}
        """
        if not isinstance(dateobj, datetime.date):
            raise ValueError("Don't know what to do with %s" % dateobj)

        first_current_month_day = dateobj.replace(day=1).timetuple()
        if dateobj.month < 12:
            nextmonth = dateobj.month + 1
            nextyear = dateobj.year
        else:
            nextmonth = 1
            nextyear = dateobj.year + 1

        first_next_month_day = dateobj.replace(day=1,
                                               month=nextmonth,
                                               year=nextyear).timetuple()

        return list(
            self.store.query(
                UsageItem,
                AND(
                    UsageItem.start_time >=
                    Time.fromStructTime(first_current_month_day),
                    UsageItem.start_time <
                    Time.fromStructTime(first_next_month_day))))
    def test_get_usage_for_day(self):
        """
        Append 2 3G sessions that occurred 21/11/07 and get usage for that day
        """
        # 16:20 PM  21 Nov 2007
        now = datetime.datetime(2007, 11, 21, 16, 20)

        args = [
            True,
            Time.fromDatetime(now),  # from now to now + 60m (60min)
            Time.fromDatetime(now + datetime.timedelta(minutes=45)),
            11212100,
            12321222
        ]

        args2 = [
            True,  # from now + 80m to now + 120m  (40min)
            Time.fromDatetime(now + datetime.timedelta(minutes=80)),
            Time.fromDatetime(now + datetime.timedelta(minutes=120)),
            112128,
            1232121
        ]

        item1 = self.mana.add_usage_item(*args)
        item2 = self.mana.add_usage_item(*args2)

        resp = self.mana.get_usage_for_day(now.date())

        self.failUnlessIn(item1, resp)
        self.failUnlessIn(item2, resp)
    def test_append_item(self):
        """
        Test that appending a couple of usage items works
        """
        args = [
            True,
            Time.fromDatetime(datetime.datetime.now()),
            Time.fromDatetime(datetime.datetime.now() +
                              datetime.timedelta(minutes=59)), 112100, 121222
        ]
        args2 = [
            False,
            Time.fromDatetime(datetime.datetime.now() -
                              datetime.timedelta(minutes=43)),
            Time.fromDatetime(datetime.datetime.now() +
                              datetime.timedelta(minutes=50)), 11244443,
            12243453
        ]

        item1 = self.mana.add_usage_item(*args)
        item2 = self.mana.add_usage_item(*args2)

        self.assertEquals(self.mana.store.getItemByID(item1.storeID), item1)
        self.assertEquals(self.mana.store.getItemByID(item2.storeID), item2)

        item1.deleteFromStore()
        item2.deleteFromStore()
Esempio n. 4
0
 def add_usage_item(self, umts, start, end, bits_recv, bits_sent):
     self.add_usage_entry(umts, start, end, bits_recv, bits_sent)
     return UsageItem(store=self.store,
                      umts=umts,
                      start_time=Time.fromDatetime(start),
                      end_time=Time.fromDatetime(end),
                      bits_recv=bits_recv,
                      bits_sent=bits_sent)
 def add_usage_item(self, umts, start, end, bits_recv, bits_sent):
     self.add_usage_entry(umts, start, end, bits_recv, bits_sent)
     return UsageItem(store=self.store,
                      umts=umts,
                      start_time=Time.fromDatetime(start),
                      end_time=Time.fromDatetime(end),
                      bits_recv=bits_recv,
                      bits_sent=bits_sent)
 def get_usage_for_day(self, dateobj):
     """
     Returns all C{UsageItem} for day C{dateobj}
     """
     if not isinstance(dateobj, datetime.date):
         raise ValueError("Don't know what to do with %s" % dateobj)
     
     today = dateobj.timetuple()
     tomorrow = (dateobj + datetime.timedelta(hours=24)).timetuple()
     
     return list(self.store.query(UsageItem,
                 AND(UsageItem.start_time >= Time.fromStructTime(today),
                     UsageItem.end_time < Time.fromStructTime(tomorrow)))
             )
 def test_get_usage_for_month(self):
     # 16:20 PM  21 Nov 2006
     now = datetime.datetime(2006, 11, 21, 16, 20)
     
     args = [True, # from now + 180m to now + 210m  (30min)
             Time.fromDatetime(now + datetime.timedelta(minutes=180)),
             Time.fromDatetime(now + datetime.timedelta(minutes=210)),
             112128, 1232121]
     
     item3 = self.mana.add_usage_item(*args)
     
     resp = list(self.mana.get_usage_for_month(now.date()))
     self.failUnless(len(resp) == 1)
     self.failUnlessIn(item3, resp)
Esempio n. 8
0
    def get_usage_for_day(self, dateobj):
        """
        Returns all C{UsageItem} for day C{dateobj}
        """
        if not isinstance(dateobj, datetime.date):
            raise ValueError("Don't know what to do with %s" % dateobj)

        today = dateobj.timetuple()
        tomorrow = (dateobj + datetime.timedelta(hours=24)).timetuple()

        return list(
            self.store.query(
                UsageItem,
                AND(UsageItem.start_time >= Time.fromStructTime(today),
                    UsageItem.end_time < Time.fromStructTime(tomorrow))))
Esempio n. 9
0
    def tag(self, obj, tagName, tagger=None):
        """
        """
        # check to see if that tag exists.  Put the object attribute first,
        # since each object should only have a handful of tags and the object
        # reference is indexed.  As long as this is the case, it doesn't matter
        # whether the name or catalog attributes are indexed because selecting
        # from a small set of results is fast even without an index.
        if self.store.findFirst(
                Tag,
                AND(Tag.object == obj, Tag.name == tagName,
                    Tag.catalog == self)):
            return

        # if the tag doesn't exist, maybe we need to create a new tagname object
        self.store.findOrCreate(_TagName, name=tagName, catalog=self)

        # Increment only if we are creating a new tag
        self.tagCount += 1
        Tag(store=self.store,
            object=obj,
            name=tagName,
            catalog=self,
            created=Time(),
            tagger=tagger)
Esempio n. 10
0
 def add_message(self, sms, where=None):
     assert isinstance(sms, ShortMessage), "What are you trying to store?"
     return DBShortMessage(store=self.store,
                           number=to_u(sms.get_number()),
                           text=sms.get_text(),
                           date=Time.fromDatetime(sms.datetime),
                           where=where)
    def test_get_usage_for_month(self):
        # 16:20 PM  21 Nov 2006
        now = datetime.datetime(2006, 11, 21, 16, 20)

        args = [
            True,  # from now + 180m to now + 210m  (30min)
            Time.fromDatetime(now + datetime.timedelta(minutes=180)),
            Time.fromDatetime(now + datetime.timedelta(minutes=210)),
            112128,
            1232121
        ]

        item3 = self.mana.add_usage_item(*args)

        resp = list(self.mana.get_usage_for_month(now.date()))
        self.failUnless(len(resp) == 1)
        self.failUnlessIn(item3, resp)
 def test_append_item(self):
     """
     Test that appending a couple of usage items works
     """
     args = [True, Time.fromDatetime(datetime.datetime.now()),
             Time.fromDatetime(datetime.datetime.now() + datetime.timedelta(minutes=59)),
             112100, 121222]
     args2 = [False, Time.fromDatetime(datetime.datetime.now() - datetime.timedelta(minutes=43)),
             Time.fromDatetime(datetime.datetime.now() + datetime.timedelta(minutes=50)),
             11244443, 12243453]
     
     item1 = self.mana.add_usage_item(*args)
     item2 = self.mana.add_usage_item(*args2)
     
     self.assertEquals(self.mana.store.getItemByID(item1.storeID), item1)
     self.assertEquals(self.mana.store.getItemByID(item2.storeID), item2)
     
     item1.deleteFromStore()
     item2.deleteFromStore()
 def test_get_usage_for_day(self):
     """
     Append 2 3G sessions that occurred 21/11/07 and get usage for that day
     """
     # 16:20 PM  21 Nov 2007
     now = datetime.datetime(2007, 11, 21, 16, 20)
     
     args = [True, Time.fromDatetime(now), # from now to now + 60m (60min)
             Time.fromDatetime(now + datetime.timedelta(minutes=45)),
             11212100, 12321222]
     
     args2 = [True, # from now + 80m to now + 120m  (40min)
              Time.fromDatetime(now + datetime.timedelta(minutes=80)),
              Time.fromDatetime(now + datetime.timedelta(minutes=120)),
              112128, 1232121]
     
     item1 = self.mana.add_usage_item(*args)
     item2 = self.mana.add_usage_item(*args2)
     
     resp = self.mana.get_usage_for_day(now.date())
     
     self.failUnlessIn(item1, resp)
     self.failUnlessIn(item2, resp)
    def get_usage_for_month(self, dateobj):
        """
        Returns all C{UsageItem} for month C{dateobj}
        """
        if not isinstance(dateobj, datetime.date):
            raise ValueError("Don't know what to do with %s" % dateobj)

        first_current_month_day = dateobj.replace(day=1).timetuple()
        if dateobj.month < 12:
            nextmonth = dateobj.month + 1
            nextyear = dateobj.year
        else:
            nextmonth = 1
            nextyear = dateobj.year + 1
        
        first_next_month_day = dateobj.replace(day=1, month=nextmonth,
                                                year=nextyear).timetuple()

        return list(self.store.query(UsageItem,
                AND(UsageItem.start_time >= Time.fromStructTime(
                                            first_current_month_day),
                    UsageItem.start_time < Time.fromStructTime(
                                            first_next_month_day)))
                )
 def add_current_usage(self, restart=True):
     """
     Adds the current usage statistics to the database
     """
     from vmc.common.oal import osobj
     tzinfo = osobj.get_tzinfo()
     end = Time.fromDatetime(datetime.datetime.now(tzinfo))
     umts = self.conn_mode in THREEG_SIGNALS
     def get_iface_stats_cb(usage):
         # append usage item
         usage_manager.add_usage_item(umts, self.start, end, *usage)
         if restart:
             # reset start time
             self.start = end
             # reset usage stats
             self.start_recv = usage[0]
             self.start_sent = usage[1]
         
     d = osobj.get_iface_stats()
     d.addCallback(get_iface_stats_cb)
Esempio n. 16
0
    def add_current_usage(self, restart=True):
        """
        Adds the current usage statistics to the database
        """
        from vmc.common.oal import osobj
        tzinfo = osobj.get_tzinfo()
        end = Time.fromDatetime(datetime.datetime.now(tzinfo))
        umts = self.conn_mode in THREEG_SIGNALS

        def get_iface_stats_cb(usage):
            # append usage item
            usage_manager.add_usage_item(umts, self.start, end, *usage)
            if restart:
                # reset start time
                self.start = end
                # reset usage stats
                self.start_recv = usage[0]
                self.start_sent = usage[1]

        d = osobj.get_iface_stats()
        d.addCallback(get_iface_stats_cb)
Esempio n. 17
0
 def now(self):
     # Testing hook
     return Time()
 def get_iface_stats_cb(stats):
     self.start_recv, self.start_sent = stats
     self.start = Time.fromDatetime(datetime.datetime.now(tzinfo))
     self.session_start = self.start
 def add_message(self, sms, where=None):
     assert isinstance(sms, ShortMessage), "What are you trying to store?"
     return DBShortMessage(store=self.store, number=to_u(sms.get_number()),
                     text=sms.get_text(),
                     date=Time.fromDatetime(sms.datetime),
                     where=where)
Esempio n. 20
0
 def get_iface_stats_cb(stats):
     self.start_recv, self.start_sent = stats
     self.start = Time.fromDatetime(datetime.datetime.now(tzinfo))
     self.session_start = self.start
Esempio n. 21
0
 def outfilter(self, dbval, oself):
     if dbval is None:
         return None
     return Time.fromPOSIXTimestamp(dbval / MICRO)