def test_with_all_params(self, ping): monitor = cronitor.Monitor(FAKE_KEY, env='staging') params = { 'state': 'run', 'host': 'foo', 'message': 'test message', 'series': 'abc', 'metrics': { 'duration': 100, 'count': 5, 'error_count': 2 } } monitor.ping(**params) del params['metrics'] params['metric'] = [ ANY, ANY, ANY, ] params['env'] = monitor.env params['stamp'] = ANY ping.assert_called_once_with( headers={ 'User-Agent': 'cronitor-python', }, params=params, timeout=5, url='https://cronitor.link/p/{}/{}'.format(FAKE_API_KEY, FAKE_KEY))
def test_endpoints(self): monitor = cronitor.Monitor(key=FAKE_KEY) self.assertTrue(monitor.ping()) states = ['run', 'complete', 'fail', 'ok'] for state in states: self.assertTrue(monitor.ping(state=state))
def test_convert_metrics_hash(self): monitor = cronitor.Monitor(FAKE_KEY) clean = monitor._clean_params( {'metrics': { 'duration': 100, 'count': 500, 'error_count': 20 }}) self.assertListEqual( sorted(clean['metric']), sorted(['count:500', 'duration:100', 'error_count:20']))
# django.contrib.auth) you may enable sending PII data. send_default_pii=True) # Cronitor cronitor.api_key = os.getenv('CRONITOR_KEY') # monitor any function @cronitor.job('QWpptg') def update_database(args): call_command('update_database') # Or embed telemetry events in your application monitor = cronitor.Monitor('QWpptg') # send a run event (a job/process has started) monitor.ping(state='run') # send a complete event (a job/process has completed successfully) monitor.ping(state='complete') # send a failure event monitor.ping(state='fail') # SECURITY WARNING: don't run with debug turned on in production! DEBUG = False ALLOWED_HOSTS = ["178.62.109.10"] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql',
# Import for DynamoDB import boto3 dynamodb = boto3.resource( 'dynamodb', region_name=AWS_REGION_NAME, endpoint_url=AWS_DYNAMODB_ENDPOINT, aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY, ) print('successfully init dynamodb') # Import for Cronitor import cronitor cronitorRecommenderMonitor = cronitor.Monitor(CRONITOR_RECOMMENDER_KEY) # Constants NUM_RELATED_POSTS = 10 # Define the number of closely related posts we want to display for each post def markdown_to_text(content): """ Converts a markdown file to plaintext """ # md -> html -> text since BeautifulSoup can extract text cleanly html = markdown(content) # remove code snippets html = re.sub(r'<pre>(.*?)</pre>', ' ', html) html = re.sub(r'<code>(.*?)</code >', ' ', html)
def test_delete_no_id(self, mocked_delete): mocked_delete.return_value.status_code = 204 monitor = cronitor.Monitor(MONITOR['key']) monitor.delete()
def test_get_monitor_invalid_code(self, mocked_get): mocked_get.return_value.status_code = 404 with self.assertRaises(cronitor.MonitorNotFound): monitor = cronitor.Monitor("I don't exist") monitor.data