def test_get_timestamps_for_query(self): simmetrica = Simmetrica() timestamps = simmetrica.get_timestamps_for_query( 1363707480, 1363707780, 60) self.assertEqual( timestamps, [1363707480, 1363707540, 1363707600, 1363707660, 1363707720])
def test_get_timestamps_for_query(self): simmetrica = Simmetrica() timestamps = simmetrica.get_timestamps_for_query( 1363707480, 1363707780, 60) expected = [1363707480, 1363707540, 1363707600, 1363707660, 1363707720] self.assertEqual(list(timestamps), expected)
def push_simmetrica_event(event_name, increment_by=1, host=MONITORING_HOST, port=6379, db=0, password=None): """ :param event_name: str, event, like "spider_opened" :param increment_by: int, increments event counter by this value :param host: Redis server host, default is MONITORING_HOST :param port: Redis server port, default is 6379 :param db: Redis database, default is 0 :param password: Redis password, default is None :return: True if the event has been pushed, None otherwise """ global USING_SIMMETRICA if not USING_SIMMETRICA: return try: simm = Simmetrica(host=host, port=port, db=db, password=password) simm.push(event_name, increment=increment_by) except Exception, e: # in very rare cases, pushing fails (if using SocksiPy for ex). # TODO: implement command-line event addition return
def test_get_timestamps_for_push(self): simmetrica = Simmetrica() timestamps = list(simmetrica.get_timestamps_for_push(1363707716)) self.assertEqual(timestamps, [('week', 1363219200), ('hour', 1363705200), ('min', 1363707660), ('month', 1363392000), ('5min', 1363707600), ('year', 1356048000), ('day', 1363651200), ('15min', 1363707000)])
def get_simmetrica_events(event_name, start, end, period='hour', host=MONITORING_HOST, port=6379, db=0, password=None): simm = Simmetrica(host=host, port=port, db=db, password=password) results = simm.query(event_name, start, end, period) return results
def return_average_for_last_days(event_name, n_days=4, exclude_zeros=True, host=MONITORING_HOST, port=6379, db=0, password=None): simm = Simmetrica(host=host, port=port, db=db, password=password) start = simm.get_current_timestamp() - 86400 * n_days end = simm.get_current_timestamp() events = [] for _stamp, _events in get_simmetrica_events(event_name, start, end): _events = int(_events) if exclude_zeros: if _events == 0: continue events.append(int(_events)) if not events: return return float(sum(events)) / len(events)
'-rd', default=None, help='Connect to the specified db in redis') parser.add_argument('--redis_password', '-ra', default=None, help='Authorization password of redis') args = parser.parse_args() app = Flask(__name__, static_folder=STATIC_FOLDER, template_folder=TEMPLATE_FOLDER) simmetrica = Simmetrica(args.redis_host, args.redis_port, args.redis_db, args.redis_password) @app.route('/') def index(): return render_template('index.html') @app.route('/push/<event>') def push(event): increment = request.args.get('increment') or Simmetrica.DEFAULT_INCREMENT now = int(request.args.get('now')) if request.args.get('now') else None simmetrica.push(event, increment, now) return 'ok'
def test_get_event_key(self): simmetrica = Simmetrica() key = simmetrica.get_event_key('foo', '5min') self.assertEqual('simmetrica:foo:5min', key)
def test_round_time(self): simmetrica = Simmetrica() rounded_time = simmetrica.round_time(1363599249, 3600) self.assertEqual(rounded_time, 1363597200)
def test_push(self): with mock.patch('simmetrica.StrictRedis') as StrictRedis: simmetrica = Simmetrica() hincrby = StrictRedis.return_value.pipeline.return_value.hincrby simmetrica.push('foo') self.assertTrue(hincrby.called)