Ejemplo n.º 1
0
    def test_pod_state_is_created_if_not_found(self):
        db.session.delete(self.pod_state)
        CS = usage.ContainerState

        usage.update_states(self.event_started)
        for container in self.pod.get_dbconfig('containers'):
            cs = CS.query.filter(
                CS.container_name == container['name'],
                CS.kubes == container.get('kubes', 1),
            ).first()
            self.assertIsNotNone(cs)
            self.assertIsNotNone(cs.pod_state)
            self.assertLessEqual(cs.pod_state.start_time, cs.start_time)
            self.assertGreaterEqual(cs.pod_state.end_time, cs.end_time)
Ejemplo n.º 2
0
 def _upd_state(pod_id, event, start_time=None, host=None):
     usage.update_states(
         {
             'metadata': {
                 'labels': {
                     'kuberdock-pod-uid': pod_id
                 }
             },
             'spec': {
                 'nodeName': host
             },
             'status': {
                 'startTime': start_time
             },
         }, event)
Ejemplo n.º 3
0
    def test_event_time_used(self):
        db.session.delete(self.pod_state)
        CS = usage.ContainerState
        event_time = datetime(2015, 11, 30, 12, 12, 12)

        usage.update_states(self.event_started,
                            event_type='DELETED',
                            event_time=event_time)
        self.assertEqual(self.pod.states[0].end_time, event_time)
        for container in self.pod.get_dbconfig('containers'):
            self.assertIsNotNone(
                CS.query.filter(
                    CS.container_name == container['name'],
                    CS.kubes == container.get('kubes', 1),
                    CS.end_time == event_time,
                ).first())
Ejemplo n.º 4
0
    def test_kubes_are_saved(self):
        """kubes == value from k8s-pod annotaions or value from database or 1"""
        CS = usage.ContainerState

        kubes_in_annotations = {self.containers[0]['name']: 7}
        event = self.event_started
        event['metadata']['annotations'] = {
            'kuberdock-container-kubes': json.dumps(kubes_in_annotations),
        }
        usage.update_states(event)
        for container in self.pod.get_dbconfig('containers'):
            name = container['name']
            self.assertIsNotNone(
                CS.query.filter(
                    CS.container_name == name,
                    CS.kubes == (kubes_in_annotations.get(name)
                                 or container.get('kubes', 1)),
                ).first())
Ejemplo n.º 5
0
    def test_fix_overlap(self):
        CS = usage.ContainerState
        container_name = self.containers[0]['name']

        usage.update_states(self.event_overlapped)
        cs1 = CS.query.filter(CS.container_name == container_name).first()
        self.assertIsNone(cs1.end_time)

        # fix_overlap if end_time is None
        usage.update_states(self.event_started)
        db.session.refresh(cs1)
        cs2 = CS.query.filter(CS.container_name == container_name,
                              CS.start_time > cs1.start_time).first()
        self.assertEqual(cs1.end_time, cs2.start_time)

        # fix overlap if end_time > start_time of the next CS
        cs1.end_time = cs2.start_time + timedelta(seconds=1)
        db.session.commit()
        usage.update_states(self.event_started)
        db.session.refresh(cs1)
        self.assertEqual(cs1.end_time, cs2.start_time)
Ejemplo n.º 6
0
 def test_pod_start_time_used(self):
     db.session.delete(self.pod_state)
     usage.update_states(self.event_started)
     event_time = datetime.strptime(
         self.event_started['status']['startTime'], '%Y-%m-%dT%H:%M:%SZ')
     self.assertEqual(self.pod.states[0].start_time, event_time)
Ejemplo n.º 7
0
 def test_pod_state_is_not_created(self):
     self.assertEqual(len(self.pod.states), 1)
     usage.update_states(self.event_started)
     self.assertEqual(len(self.pod.states), 1)