diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index cb3a78a..5e4748f 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -23,7 +23,7 @@
 
 
 test_edge = {
-    'name': 'production-edge-onf-menlo',
+    'name': 'ace-menlo-pixel',
     'status': {
         'control_plane': 'connected',
         'user_plane': 'connected'
@@ -52,28 +52,32 @@
         self.app = ems.app.test_client()
 
     def test_match_location(self):
-        event = MyEvent(location = "production-edge-onf-menlo, (Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "production-edge-onf-menlo"))
-        self.assertTrue(ems.is_my_event(event, "(Compute)-MP-1-Aether Production"))
+        event = MyEvent(location = "ace-menlo-pixel-production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        event = MyEvent(location = "(Compute)-MP-1-Aether Production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
 
     def test_match_description(self):
-        event = MyEvent(description = "production-edge-onf-menlo, (Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "production-edge-onf-menlo"))
-        self.assertTrue(ems.is_my_event(event, "(Compute)-MP-1-Aether Production"))
+        event = MyEvent(description = "ace-menlo-pixel-production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        event = MyEvent(description = "(Compute)-MP-1-Aether Production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
 
     def test_match_summary(self):
-        event = MyEvent(summary = "production-edge-onf-menlo, (Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "production-edge-onf-menlo"))
-        self.assertTrue(ems.is_my_event(event, "(Compute)-MP-1-Aether Production"))
+        event = MyEvent(summary = "ace-menlo-pixel-production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
+        event = MyEvent(summary = "(Compute)-MP-1-Aether Production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
 
     def test_no_match(self):
-        event = MyEvent(summary = "production-edge-onf-menlo, (Compute)-MP-1-Aether Production")
-        self.assertFalse(ems.is_my_event(event, "production-edge-intel"))
+        event = MyEvent(summary = "ace-menlo-pixel-production, (Compute)-MP-1-Aether Production")
+        self.assertFalse(ems.is_my_event(event, "ace-intel"))
         self.assertFalse(ems.is_my_event(event, "(Compute)-MP-1-Aether Staging"))
+        self.assertFalse(ems.is_my_event(event, "ace-menlo"))
 
     def test_missing_field(self):
-        event = MyEventNoLoc(description = "production-edge-onf-menlo, (Compute)-MP-1-Aether Production")
-        self.assertTrue(ems.is_my_event(event, "production-edge-onf-menlo"))
+        event = MyEventNoLoc(description = "(Compute)-MP-1-Aether Production")
+        self.assertTrue(ems.is_my_event(event, "ace-menlo-pixel"))
 
     def test_in_window(self):
         events = []
@@ -81,25 +85,25 @@
         events.append(MyEvent(location = "(Compute)-MP-1-Aether Production",
             start = now - datetime.timedelta(hours=1),
             end = now + datetime.timedelta(hours=1)))
-        self.assertTrue(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
-        self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-tucson", now))
+        self.assertTrue(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-tucson", now))
 
     def test_not_in_window(self):
         events = []
         now = datetime.datetime.now(pytz.utc)
-        events.append(MyEvent(location = "production-edge-onf-menlo",
+        events.append(MyEvent(location = "ace-menlo-pixel-production",
             start = now + datetime.timedelta(hours=1),
             end = now + datetime.timedelta(hours=2)))
-        self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
 
     def test_no_events(self):
         events = []
         now = datetime.datetime.now(pytz.utc)
-        self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
 
     def test_all_day_events(self):
         events = []
-        events.append(MyEvent(location = "production-edge-onf-menlo",
+        events.append(MyEvent(location = "ace-menlo-pixel-production",
             start = datetime.datetime(2020, 9, 2, 0, 0),
             end = datetime.datetime(2020, 9, 3, 0, 0),
             all_day = True))
@@ -107,27 +111,27 @@
         ems.process_all_day_events(events)
 
         now = datetime.datetime(2020, 9, 2, 12, 0, tzinfo=pytz.utc)
-        self.assertTrue(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+        self.assertTrue(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
 
         now = datetime.datetime(2020, 9, 3, 12, 0, tzinfo=pytz.utc)
-        self.assertFalse(ems.in_maintenance_window(events, "production-edge-onf-menlo", now))
+        self.assertFalse(ems.in_maintenance_window(events, "ace-menlo-pixel", now))
 
     def test_get_edges(self):
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(len(data['edges']), 1)
-        self.assertEqual(data['edges'][0]['name'], 'production-edge-example')
+        self.assertEqual(data['edges'][0]['name'], 'ace-example')
 
     def test_create_and_delete_edge(self):
         response = self.app.post('/edges', json=test_edge)
         data = json.loads(response.get_data(as_text=True))
-        self.assertEqual(data['edge']['name'], 'production-edge-onf-menlo')
+        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
 
         response = self.app.get('/edges')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(len(data['edges']), 2)
 
-        response = self.app.delete('/edges/production-edge-onf-menlo')
+        response = self.app.delete('/edges/ace-menlo-pixel')
         data = json.loads(response.get_data(as_text=True))
         self.assertEqual(data['result'], True)
         response = self.app.get('/edges', json=test_edge)
