improved the container listings for the stats processor
This commit is contained in:
@@ -113,48 +113,35 @@ class LogProcessor(object):
|
|||||||
listing_filter=None):
|
listing_filter=None):
|
||||||
'''
|
'''
|
||||||
Get a container listing, filtered by start_date, end_date, and
|
Get a container listing, filtered by start_date, end_date, and
|
||||||
listing_filter. Dates, if given, should be in YYYYMMDDHH format
|
listing_filter. Dates, if given, must be in YYYYMMDDHH format
|
||||||
'''
|
'''
|
||||||
search_key = None
|
search_key = None
|
||||||
if start_date is not None:
|
if start_date is not None:
|
||||||
date_parts = []
|
|
||||||
try:
|
try:
|
||||||
year, start_date = start_date[:4], start_date[4:]
|
parsed_date = time.strptime(start_date, '%Y%m%d%H')
|
||||||
if year:
|
except ValueError:
|
||||||
date_parts.append(year)
|
|
||||||
month, start_date = start_date[:2], start_date[2:]
|
|
||||||
if month:
|
|
||||||
date_parts.append(month)
|
|
||||||
day, start_date = start_date[:2], start_date[2:]
|
|
||||||
if day:
|
|
||||||
date_parts.append(day)
|
|
||||||
hour, start_date = start_date[:2], start_date[2:]
|
|
||||||
if hour:
|
|
||||||
date_parts.append(hour)
|
|
||||||
except IndexError:
|
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
search_key = '/'.join(date_parts)
|
year = '%04d' % parsed_date.tm_year
|
||||||
|
month = '%02d' % parsed_date.tm_mon
|
||||||
|
day = '%02d' % parsed_date.tm_mday
|
||||||
|
hour = '%02d' % parsed_date.tm_hour
|
||||||
|
search_key = '/'.join([year, month, day, hour])
|
||||||
end_key = None
|
end_key = None
|
||||||
if end_date is not None:
|
if end_date is not None:
|
||||||
date_parts = []
|
|
||||||
try:
|
try:
|
||||||
year, end_date = end_date[:4], end_date[4:]
|
parsed_date = time.strptime(end_date, '%Y%m%d%H')
|
||||||
if year:
|
except ValueError:
|
||||||
date_parts.append(year)
|
|
||||||
month, end_date = end_date[:2], end_date[2:]
|
|
||||||
if month:
|
|
||||||
date_parts.append(month)
|
|
||||||
day, end_date = end_date[:2], end_date[2:]
|
|
||||||
if day:
|
|
||||||
date_parts.append(day)
|
|
||||||
hour, end_date = end_date[:2], end_date[2:]
|
|
||||||
if hour:
|
|
||||||
date_parts.append(hour)
|
|
||||||
except IndexError:
|
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
end_key = '/'.join(date_parts)
|
year = '%04d' % parsed_date.tm_year
|
||||||
|
month = '%02d' % parsed_date.tm_mon
|
||||||
|
day = '%02d' % parsed_date.tm_mday
|
||||||
|
hour = '%02d' % parsed_date.tm_hour
|
||||||
|
# Since the end_marker filters by <=, we need to add something
|
||||||
|
# to then end_key to make sure we get all the data under the
|
||||||
|
# last hour. Adding '/\x7f' should be all inclusive.
|
||||||
|
end_key = '/'.join([year, month, day, hour]) + '/\x7f'
|
||||||
container_listing = self.internal_proxy.get_container_list(
|
container_listing = self.internal_proxy.get_container_list(
|
||||||
swift_account,
|
swift_account,
|
||||||
container_name,
|
container_name,
|
||||||
|
@@ -37,9 +37,10 @@ class DumbInternalProxy(object):
|
|||||||
end_marker=None):
|
end_marker=None):
|
||||||
n = '2010/03/14/13/obj1'
|
n = '2010/03/14/13/obj1'
|
||||||
if marker is None or n > marker:
|
if marker is None or n > marker:
|
||||||
if end_marker and n <= end_marker:
|
if end_marker:
|
||||||
|
if n <= end_marker:
|
||||||
return [{'name': n}]
|
return [{'name': n}]
|
||||||
elif end_marker:
|
else:
|
||||||
return []
|
return []
|
||||||
return [{'name': n}]
|
return [{'name': n}]
|
||||||
return []
|
return []
|
||||||
@@ -178,6 +179,10 @@ use = egg:swift#proxy
|
|||||||
end_date='2010031412')
|
end_date='2010031412')
|
||||||
expected = []
|
expected = []
|
||||||
self.assertEquals(result, expected)
|
self.assertEquals(result, expected)
|
||||||
|
result = p.get_container_listing('a', 'foo', start_date='2010031412',
|
||||||
|
end_date='2010031413')
|
||||||
|
expected = ['2010/03/14/13/obj1']
|
||||||
|
self.assertEquals(result, expected)
|
||||||
|
|
||||||
def test_get_object_data(self):
|
def test_get_object_data(self):
|
||||||
p = log_processor.LogProcessor(self.proxy_config, DumbLogger())
|
p = log_processor.LogProcessor(self.proxy_config, DumbLogger())
|
||||||
@@ -212,7 +217,6 @@ use = egg:swift#proxy
|
|||||||
p = log_processor.LogProcessor(self.proxy_config, DumbLogger())
|
p = log_processor.LogProcessor(self.proxy_config, DumbLogger())
|
||||||
result = p.generate_keylist_mapping()
|
result = p.generate_keylist_mapping()
|
||||||
expected = {}
|
expected = {}
|
||||||
print p.plugins
|
|
||||||
self.assertEquals(result, expected)
|
self.assertEquals(result, expected)
|
||||||
|
|
||||||
def test_generate_keylist_mapping_with_dummy_plugins(self):
|
def test_generate_keylist_mapping_with_dummy_plugins(self):
|
||||||
|
Reference in New Issue
Block a user