|
4 | 4 | from datetime import datetime |
5 | 5 | from unittest.mock import MagicMock |
6 | 6 |
|
7 | | -from kube_downscaler.scaler import autoscale_resource, EXCLUDE_ANNOTATION, ORIGINAL_REPLICAS_ANNOTATION |
| 7 | +from kube_downscaler.scaler import autoscale_resource, EXCLUDE_ANNOTATION, ORIGINAL_REPLICAS_ANNOTATION, DOWNTIME_REPLICAS_ANNOTATION |
8 | 8 |
|
9 | 9 |
|
10 | 10 | @pytest.fixture |
@@ -107,3 +107,24 @@ def test_scale_up(resource): |
107 | 107 | autoscale_resource(resource, 'Mon-Fri 07:30-20:30 Europe/Berlin', 'never', False, False, now, 0) |
108 | 108 | assert resource.replicas == 3 |
109 | 109 | resource.update.assert_called_once() |
| 110 | + |
| 111 | + |
| 112 | +def test_downtime_replicas_invalid(resource): |
| 113 | + resource.annotations = {DOWNTIME_REPLICAS_ANNOTATION: 'x'} |
| 114 | + resource.replicas = 2 |
| 115 | + now = datetime.strptime('2018-10-23T21:56:00Z', '%Y-%m-%dT%H:%M:%SZ') |
| 116 | + resource.metadata = {'creationTimestamp': '2018-10-23T21:55:00Z'} |
| 117 | + autoscale_resource(resource, 'never', 'always', False, False, now, 0) |
| 118 | + assert resource.replicas == 2 |
| 119 | + resource.update.assert_not_called() |
| 120 | + |
| 121 | + |
| 122 | +def test_downtime_replicas_valid(resource): |
| 123 | + resource.annotations = {DOWNTIME_REPLICAS_ANNOTATION: '1'} |
| 124 | + resource.replicas = 2 |
| 125 | + now = datetime.strptime('2018-10-23T21:56:00Z', '%Y-%m-%dT%H:%M:%SZ') |
| 126 | + resource.metadata = {'creationTimestamp': '2018-10-23T21:55:00Z'} |
| 127 | + autoscale_resource(resource, 'never', 'always', False, False, now, 0) |
| 128 | + assert resource.replicas == 1 |
| 129 | + resource.update.assert_called_once() |
| 130 | + assert resource.annotations[ORIGINAL_REPLICAS_ANNOTATION] == '2' |
0 commit comments