tests: add pingdom test and supporting json examples
This commit is contained in:
		
					parent
					
						
							
								d964f75c84
							
						
					
				
			
			
				commit
				
					
						b5912a8b6c
					
				
			
		
					 4 changed files with 147 additions and 0 deletions
				
			
		
							
								
								
									
										33
									
								
								tests/example_pingdom_dns.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tests/example_pingdom_dns.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					      "check_id": 12345,
 | 
				
			||||||
 | 
					      "check_name": "Pingdom-dns build test",
 | 
				
			||||||
 | 
					      "check_type": "DNS",
 | 
				
			||||||
 | 
					      "check_params": {
 | 
				
			||||||
 | 
					        "hostname": "www.example.com",
 | 
				
			||||||
 | 
					        "basic_auth": false,
 | 
				
			||||||
 | 
					        "expected_ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": false,
 | 
				
			||||||
 | 
					        "nameserver": "example.com"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "example_tag"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "previous_state": "UP",
 | 
				
			||||||
 | 
					      "current_state": "DOWN",
 | 
				
			||||||
 | 
					      "importance_level": "HIGH",
 | 
				
			||||||
 | 
					      "state_changed_timestamp": 1451610061,
 | 
				
			||||||
 | 
					      "state_changed_utc_time": "2016-01-01T01:01:01",
 | 
				
			||||||
 | 
					      "long_description": "Long error message",
 | 
				
			||||||
 | 
					      "description": "Short error message",
 | 
				
			||||||
 | 
					      "first_probe": {
 | 
				
			||||||
 | 
					        "ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": "2001:4800:1020:209::5",
 | 
				
			||||||
 | 
					        "location": "Stockholm, Sweden"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "second_probe": {
 | 
				
			||||||
 | 
					        "ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": "2001:4800:1020:209::5",
 | 
				
			||||||
 | 
					        "location": "Austin, US",
 | 
				
			||||||
 | 
					        "version": 1
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										36
									
								
								tests/example_pingdom_http.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								tests/example_pingdom_http.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					      "check_id": 12345,
 | 
				
			||||||
 | 
					      "check_name": "Pingdom-http build test",
 | 
				
			||||||
 | 
					      "check_type": "HTTP",
 | 
				
			||||||
 | 
					      "check_params": {
 | 
				
			||||||
 | 
					        "basic_auth": false,
 | 
				
			||||||
 | 
					        "encryption": true,
 | 
				
			||||||
 | 
					        "full_url": "https://www.example.com/path",
 | 
				
			||||||
 | 
					        "header": "User-Agent:Pingdom.com_bot",
 | 
				
			||||||
 | 
					        "hostname": "www.example.com",
 | 
				
			||||||
 | 
					        "ipv6": false,
 | 
				
			||||||
 | 
					        "port": 443,
 | 
				
			||||||
 | 
					        "url": "/path"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "example_tag"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "previous_state": "UP",
 | 
				
			||||||
 | 
					      "current_state": "DOWN",
 | 
				
			||||||
 | 
					      "importance_level": "HIGH",
 | 
				
			||||||
 | 
					      "state_changed_timestamp": 1451610061,
 | 
				
			||||||
 | 
					      "state_changed_utc_time": "2016-01-01T01:01:01",
 | 
				
			||||||
 | 
					      "long_description": "Long error message",
 | 
				
			||||||
 | 
					      "description": "Short error message",
 | 
				
			||||||
 | 
					      "first_probe": {
 | 
				
			||||||
 | 
					        "ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": "2001:4800:1020:209::5",
 | 
				
			||||||
 | 
					        "location": "Stockholm, Sweden"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "second_probe": {
 | 
				
			||||||
 | 
					        "ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": "2001:4800:1020:209::5",
 | 
				
			||||||
 | 
					        "location": "Austin, US",
 | 
				
			||||||
 | 
					        "version": 1
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										34
									
								
								tests/example_pingdom_tcp.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								tests/example_pingdom_tcp.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,34 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					"body":{
 | 
				
			||||||
 | 
					      "check_id": 12345,
 | 
				
			||||||
 | 
					      "check_name": "Pingdom-tcp build test",
 | 
				
			||||||
 | 
					      "check_type": "PORT_TCP",
 | 
				
			||||||
 | 
					      "check_params": {
 | 
				
			||||||
 | 
					        "hostname": "www.example.com",
 | 
				
			||||||
 | 
					        "basic_auth": false,
 | 
				
			||||||
 | 
					        "ipv6": false,
 | 
				
			||||||
 | 
					        "port": 80
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "tags": [
 | 
				
			||||||
 | 
					        "example_tag"
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "previous_state": "UP",
 | 
				
			||||||
 | 
					      "current_state": "DOWN",
 | 
				
			||||||
 | 
					      "importance_level": "HIGH",
 | 
				
			||||||
 | 
					      "state_changed_timestamp": 1451610061,
 | 
				
			||||||
 | 
					      "state_changed_utc_time": "2016-01-01T01:01:01",
 | 
				
			||||||
 | 
					      "long_description": "Long error message",
 | 
				
			||||||
 | 
					      "description": "Short error message",
 | 
				
			||||||
 | 
					      "first_probe": {
 | 
				
			||||||
 | 
					        "ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": "2001:4800:1020:209::5",
 | 
				
			||||||
 | 
					        "location": "Stockholm, Sweden"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "second_probe": {
 | 
				
			||||||
 | 
					        "ip": "123.4.5.6",
 | 
				
			||||||
 | 
					        "ipv6": "2001:4800:1020:209::5",
 | 
				
			||||||
 | 
					        "location": "Austin, US",
 | 
				
			||||||
 | 
					        "version": 1
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
							
								
								
									
										44
									
								
								tests/test_pingdom.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								tests/test_pingdom.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,44 @@
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					Test module for pingdom formatter.
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import unittest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import httpx
 | 
				
			||||||
 | 
					import nio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .start import BOT_URL, FULL_ID, KEY, MATRIX_ID, MATRIX_PW, MATRIX_URL
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PingdomFormatterTest(unittest.IsolatedAsyncioTestCase):
 | 
				
			||||||
 | 
					    """Grafana formatter test class."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    async def test_pingdom_http_body(self):
 | 
				
			||||||
 | 
					        """Send a markdown message, and check the result."""
 | 
				
			||||||
 | 
					        messages = []
 | 
				
			||||||
 | 
					        client = nio.AsyncClient(MATRIX_URL, MATRIX_ID)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        await client.login(MATRIX_PW)
 | 
				
			||||||
 | 
					        room = await client.room_create()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        with open("tests/example_pingdom_http.json") as f:
 | 
				
			||||||
 | 
					            example_pingdom_request = f.read()
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            httpx.post(
 | 
				
			||||||
 | 
					                f"{BOT_URL}/{room.room_id}",
 | 
				
			||||||
 | 
					                params={"formatter": "pingdom", "key": KEY},
 | 
				
			||||||
 | 
					                content=example_pingdom_request,
 | 
				
			||||||
 | 
					            ).json(),
 | 
				
			||||||
 | 
					            {"status": 200, "ret": "OK"},
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sync = await client.sync()
 | 
				
			||||||
 | 
					        messages = await client.room_messages(room.room_id, sync.next_batch)
 | 
				
			||||||
 | 
					        await client.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        message = messages.chunk[0]
 | 
				
			||||||
 | 
					        self.assertEqual(message.sender, FULL_ID)
 | 
				
			||||||
 | 
					        self.assertEqual(
 | 
				
			||||||
 | 
					            message.body,
 | 
				
			||||||
 | 
					            "#### [Alerting] Panel Title alert\nNotification Message\n\n* Count: 1\n",
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue