Exemplo n.º 1
0
 def test_clean_old_2(self):
     cache = FileCache(10, 2)
     cache.set("key1", "value")
     cache.set("key2", "value")
     cache.set("key3", "value")
     cache.set("key4", "value")
     self.assertEqual(4, len(cache.objects))
     cache.clean_old()
     self.assertEqual(4, len(cache.objects))
Exemplo n.º 2
0
 def test_clean_old_2(self):
     cache = FileCache(10, 2)
     cache.set("key1", "value")
     cache.set("key2", "value")
     cache.set("key3", "value")
     cache.set("key4", "value")
     self.assertEqual(4, len(cache.objects))
     cache.clean_old()
     self.assertEqual(4, len(cache.objects))
Exemplo n.º 3
0
 def test_clean_count_1(self):
     cache = FileCache(3, 1)
     cache.set("key1", "value")
     cache.set("key2", "value")
     cache.set("key3", "value")
     cache.set("key4", "value")
     self.assertEqual(4, len(cache.objects))
     cache.clean_count()
     self.assertEqual(3, len(cache.objects))
Exemplo n.º 4
0
 def test_clean_count_1(self):
     cache = FileCache(3, 1)
     cache.set("key1", "value")
     cache.set("key2", "value")
     cache.set("key3", "value")
     cache.set("key4", "value")
     self.assertEqual(4, len(cache.objects))
     cache.clean_count()
     self.assertEqual(3, len(cache.objects))
Exemplo n.º 5
0
 def test_clean_old_1(self):
     cache = FileCache(10, 2)
     cache.get_today = mock.Mock(return_value=datetime.datetime.today().date())
     cache.set("key1", "value")
     cache.get_today = mock.Mock(return_value=(datetime.datetime.today() - datetime.timedelta(days=1)).date())
     cache.set("key2", "value")
     cache.get_today = mock.Mock(return_value=(datetime.datetime.today() - datetime.timedelta(days=2)).date())
     cache.set("key3", "value")
     cache.get_today = mock.Mock(return_value=(datetime.datetime.today() - datetime.timedelta(days=3)).date())
     cache.set("key4", "value")
     self.assertEqual(4, len(cache.objects))
     cache.get_today = mock.Mock(return_value=datetime.datetime.today().date())
     cache.clean_old()
     self.assertEqual(2, len(cache.objects))
Exemplo n.º 6
0
 def test_clean_old_1(self):
     cache = FileCache(10, 2)
     cache.get_today = mock.Mock(
         return_value=datetime.datetime.today().date())
     cache.set("key1", "value")
     cache.get_today = mock.Mock(
         return_value=(datetime.datetime.today() -
                       datetime.timedelta(days=1)).date())
     cache.set("key2", "value")
     cache.get_today = mock.Mock(
         return_value=(datetime.datetime.today() -
                       datetime.timedelta(days=2)).date())
     cache.set("key3", "value")
     cache.get_today = mock.Mock(
         return_value=(datetime.datetime.today() -
                       datetime.timedelta(days=3)).date())
     cache.set("key4", "value")
     self.assertEqual(4, len(cache.objects))
     cache.get_today = mock.Mock(
         return_value=datetime.datetime.today().date())
     cache.clean_old()
     self.assertEqual(2, len(cache.objects))
Exemplo n.º 7
0
class ReverseGeocodeShapeCommand(StreamingCommand):
    lat = Option(
        doc='''
        **Syntax:** **lat=***<fieldname>*
        **Description:** Name of the field that holds the latitude''',
        require=False, default="lat", validate=validators.Fieldname())

    lng = Option(
        doc='''
        **Syntax:** **lng=***<fieldname>*
        **Description:** Name of the field that holds the longitude''',
        require=False, default="lng", validate=validators.Fieldname())

    filetype = Option(
        doc='''
        **Syntax:** **filetype=***<filetype>*
        **Description:** Type of file: geojson or kml''',
        require=False, default="geojson")

    filename = Option(
        doc='''
        **Syntax:** **filename=***<filename>*
        **Description:** Name of the file''',
        require=False, default="world2.geojson")

    fieldname = Option(
        doc='''
        **Syntax:** **fieldname=***fieldname*
        **Description:** Name of the field that will contain the result''',
        require=False, default="key")

    def stream(self, records):
        basepath = os.path.join(os.environ['SPLUNK_HOME'], "etc", "apps", "heremaps")

        rev = ReverseGeocoderShape()
        map_file = os.path.join(basepath, "appserver", "static", "data", self.filename)
        rev.load_map_file(self.filetype, map_file)
        self.logger.info("Loaded map file %s" % self.filename)

        # Load map index file, this speeds up the command a lot
        index_file = os.path.join(basepath, "bin", "lib")
        rev.load_index(index_file)
        self.logger.info("Loaded map index %s" % index_file)

        # Load cached results
        cache_file = os.path.join(basepath, "bin", "lib", "reversegeocodeshape-" + rev.map_md5 + ".cache")
        self.cache = FileCache(1000000, 62)
        self.cache.read_cache_file(cache_file)
        self.logger.info("Loaded cached results %s" % cache_file)

        # iterate over records
        for record in records:
            lat = round(float(record[self.lat]), 5)
            lng = round(float(record[self.lng]), 5)
            cache_key = "%s,%s" % (lat, lng)
            try:
                key = self.cache.get(cache_key)
            except KeyError:
                key = rev.reversegeocode(lat, lng)

            self.cache.set(cache_key, key)
            record[self.fieldname] = key
            yield record

        try:
            self.cache.write_cache_file(cache_file)
        except:
            self.logger.error("Could not write cache file")
Exemplo n.º 8
0
 def test_get_existent_key(self):
     cache = FileCache(1000, 1)
     cache.set("mykey", "myvalue")
     self.assertEqual("myvalue", cache.get("mykey"))
Exemplo n.º 9
0
 def test_empty_key(self):
     cache = FileCache(1000, 1)
     cache.set("mykey", "myvalue")
     cache.set("mykey", None)
     self.assertEquals(cache.objects["mykey"]["data"], None)
Exemplo n.º 10
0
 def test_overwrite_key(self):
     cache = FileCache(1000, 1)
     cache.set("mykey", "myvalue")
     cache.set("mykey", "NewValue")
     self.assertEquals(cache.objects["mykey"]["data"], "NewValue")
Exemplo n.º 11
0
class ReverseGeocodeShapeCommand(StreamingCommand):
    lat = Option(doc='''
        **Syntax:** **lat=***<fieldname>*
        **Description:** Name of the field that holds the latitude''',
                 require=False,
                 default="lat",
                 validate=validators.Fieldname())

    lng = Option(doc='''
        **Syntax:** **lng=***<fieldname>*
        **Description:** Name of the field that holds the longitude''',
                 require=False,
                 default="lng",
                 validate=validators.Fieldname())

    filetype = Option(doc='''
        **Syntax:** **filetype=***<filetype>*
        **Description:** Type of file: geojson or kml''',
                      require=False,
                      default="geojson")

    filename = Option(doc='''
        **Syntax:** **filename=***<filename>*
        **Description:** Name of the file''',
                      require=False,
                      default="world2.geojson")

    fieldname = Option(doc='''
        **Syntax:** **fieldname=***fieldname*
        **Description:** Name of the field that will contain the result''',
                       require=False,
                       default="key")

    def stream(self, records):
        basepath = os.path.join(os.environ['SPLUNK_HOME'], "etc", "apps",
                                "heremaps")

        rev = ReverseGeocoderShape()
        map_file = os.path.join(basepath, "appserver", "static", "data",
                                self.filename)
        rev.load_map_file(self.filetype, map_file)
        self.logger.info("Loaded map file %s" % self.filename)

        # Load map index file, this speeds up the command a lot
        index_file = os.path.join(basepath, "bin", "lib")
        rev.load_index(index_file)
        self.logger.info("Loaded map index %s" % index_file)

        # Load cached results
        cache_file = os.path.join(
            basepath, "bin", "lib",
            "reversegeocodeshape-" + rev.map_md5 + ".cache")
        self.cache = FileCache(1000000, 62)
        self.cache.read_cache_file(cache_file)
        self.logger.info("Loaded cached results %s" % cache_file)

        # iterate over records
        for record in records:
            lat = round(float(record[self.lat]), 5)
            lng = round(float(record[self.lng]), 5)
            cache_key = "%s,%s" % (lat, lng)
            try:
                key = self.cache.get(cache_key)
            except KeyError:
                key = rev.reversegeocode(lat, lng)

            self.cache.set(cache_key, key)
            record[self.fieldname] = key
            yield record

        try:
            self.cache.write_cache_file(cache_file)
        except:
            self.logger.error("Could not write cache file")
Exemplo n.º 12
0
 def test_get_existent_key(self):
     cache = FileCache(1000, 1)
     cache.set("mykey", "myvalue")
     self.assertEqual("myvalue", cache.get("mykey"))
Exemplo n.º 13
0
 def test_empty_key(self):
     cache = FileCache(1000, 1)
     cache.set("mykey", "myvalue")
     cache.set("mykey", None)
     self.assertEquals(cache.objects["mykey"]["data"], None)
Exemplo n.º 14
0
 def test_overwrite_key(self):
     cache = FileCache(1000, 1)
     cache.set("mykey", "myvalue")
     cache.set("mykey", "NewValue")
     self.assertEquals(cache.objects["mykey"]["data"], "NewValue")