예제 #1
0
    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)
예제 #2
0
 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])
예제 #3
0
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
예제 #4
0
 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)])
예제 #5
0
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
예제 #6
0
 def test_get_timestamps_for_push(self):
     simmetrica = Simmetrica()
     timestamps = list(simmetrica.get_timestamps_for_push(1363707716))
     self.assertEqual(sorted(timestamps), [
         ('15min', 1363707000),
         ('5min', 1363707600),
         ('day', 1363651200),
         ('hour', 1363705200),
         ('min', 1363707660),
         ('month', 1363392000),
         ('week', 1363219200),
         ('year', 1356048000),
     ])
예제 #7
0
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)
예제 #8
0
파일: cli.py 프로젝트: dwmclary/simmetrica
subparsers = parser.add_subparsers(dest='subparser_name')

push_parser = subparsers.add_parser('push')
push_parser.add_argument('event')
push_parser.add_argument('--increment', default=Simmetrica.DEFAULT_INCREMENT, type=int)
push_parser.add_argument('--now', type=int)

query_parser = subparsers.add_parser('query')
query_parser.add_argument('event')
query_parser.add_argument('start', type=int)
query_parser.add_argument('end', type=int)
query_parser.add_argument('--resolution', default='5min', choices=Simmetrica.resolutions)

args = parser.parse_args()

simmetrica = Simmetrica(
    os.getenv('REDIS_HOST'),
    os.getenv('REDIS_PORT'),
    os.getenv('REDIS_DB')
)

if args.subparser_name == 'push':
    simmetrica.push(args.event, args.increment, args.now)
    print 'ok'

if args.subparser_name == 'query':
    results = simmetrica.query(args.event, args.start, args.end, args.resolution)
    for timestamp, value in results:
        print timestamp, value
예제 #9
0
 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)
예제 #10
0
 def test_get_event_key(self):
     simmetrica = Simmetrica()
     key = simmetrica.get_event_key('foo', '5min')
     self.assertEqual('simmetrica:foo:5min', key)
예제 #11
0
 def test_round_time(self):
     simmetrica = Simmetrica()
     rounded_time = simmetrica.round_time(1363599249, 3600)
     self.assertEqual(rounded_time, 1363597200)
예제 #12
0
 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])
예제 #13
0
                    '-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'

예제 #14
0
 def test_get_event_key(self):
     simmetrica = Simmetrica()
     key = simmetrica.get_event_key('foo', '5min')
     self.assertEqual('simmetrica:foo:5min', key)
예제 #15
0
 def test_round_time(self):
     simmetrica = Simmetrica()
     rounded_time = simmetrica.round_time(1363599249, 3600)
     self.assertEqual(rounded_time, 1363597200)
예제 #16
0
 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)
예제 #17
0
                    default=None,
                    help='Connect to redis on the specified port')
parser.add_argument('--redis_db',
                    '-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__)
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'

예제 #18
0
    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)