Coverage for manila/tests/scheduler/test_scheduler_options.py: 100%
84 statements
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2026-02-18 22:19 +0000
1# Copyright 2011 OpenStack LLC.
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15"""
16Tests For scheduler options.
17"""
19import datetime
21from oslo_serialization import jsonutils
23from manila.scheduler import scheduler_options
24from manila import test
27class FakeSchedulerOptions(scheduler_options.SchedulerOptions):
28 def __init__(self, last_checked, now, file_old, file_now, data, filedata):
29 super(FakeSchedulerOptions, self).__init__()
30 # Change internals ...
31 self.last_modified = file_old
32 self.last_checked = last_checked
33 self.data = data
35 # For overrides ...
36 self._time_now = now
37 self._file_now = file_now
38 self._file_data = filedata.encode("utf-8")
40 self.file_was_loaded = False
42 def _get_file_timestamp(self, filename):
43 return self._file_now
45 def _get_file_handle(self, filename):
46 self.file_was_loaded = True
47 import io
48 return io.BytesIO(self._file_data)
50 def _get_time_now(self):
51 return self._time_now
54class SchedulerOptionsTestCase(test.TestCase):
55 def test_get_configuration_first_time_no_flag(self):
56 last_checked = None
57 now = datetime.datetime(2012, 1, 1, 1, 1, 1)
58 file_old = None
59 file_now = datetime.datetime(2012, 1, 1, 1, 1, 1)
61 data = dict(a=1, b=2, c=3)
62 jdata = jsonutils.dumps(data)
64 fake = FakeSchedulerOptions(last_checked, now, file_old, file_now,
65 {}, jdata)
66 self.assertEqual({}, fake.get_configuration())
67 self.assertFalse(fake.file_was_loaded)
69 def test_get_configuration_first_time_empty_file(self):
70 last_checked = None
71 now = datetime.datetime(2012, 1, 1, 1, 1, 1)
72 file_old = None
73 file_now = datetime.datetime(2012, 1, 1, 1, 1, 1)
75 jdata = ""
77 fake = FakeSchedulerOptions(last_checked, now, file_old, file_now,
78 {}, jdata)
79 self.assertEqual({}, fake.get_configuration('foo.json'))
80 self.assertTrue(fake.file_was_loaded)
82 def test_get_configuration_first_time_happy_day(self):
83 last_checked = None
84 now = datetime.datetime(2012, 1, 1, 1, 1, 1)
85 file_old = None
86 file_now = datetime.datetime(2012, 1, 1, 1, 1, 1)
88 data = dict(a=1, b=2, c=3)
89 jdata = jsonutils.dumps(data)
91 fake = FakeSchedulerOptions(last_checked, now, file_old, file_now,
92 {}, jdata)
93 self.assertEqual(data, fake.get_configuration('foo.json'))
94 self.assertTrue(fake.file_was_loaded)
96 def test_get_configuration_second_time_no_change(self):
97 last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1)
98 now = datetime.datetime(2012, 1, 1, 1, 1, 1)
99 file_old = datetime.datetime(2012, 1, 1, 1, 1, 1)
100 file_now = datetime.datetime(2012, 1, 1, 1, 1, 1)
102 data = dict(a=1, b=2, c=3)
103 jdata = jsonutils.dumps(data)
105 fake = FakeSchedulerOptions(last_checked, now, file_old, file_now,
106 data, jdata)
107 self.assertEqual(data, fake.get_configuration('foo.json'))
108 self.assertFalse(fake.file_was_loaded)
110 def test_get_configuration_second_time_too_fast(self):
111 last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1)
112 now = datetime.datetime(2011, 1, 1, 1, 1, 2)
113 file_old = datetime.datetime(2012, 1, 1, 1, 1, 1)
114 file_now = datetime.datetime(2013, 1, 1, 1, 1, 1)
116 old_data = dict(a=1, b=2, c=3)
117 data = dict(a=11, b=12, c=13)
118 jdata = jsonutils.dumps(data)
120 fake = FakeSchedulerOptions(last_checked, now, file_old, file_now,
121 old_data, jdata)
122 self.assertEqual(old_data, fake.get_configuration('foo.json'))
123 self.assertFalse(fake.file_was_loaded)
125 def test_get_configuration_second_time_change(self):
126 last_checked = datetime.datetime(2011, 1, 1, 1, 1, 1)
127 now = datetime.datetime(2012, 1, 1, 1, 1, 1)
128 file_old = datetime.datetime(2012, 1, 1, 1, 1, 1)
129 file_now = datetime.datetime(2013, 1, 1, 1, 1, 1)
131 old_data = dict(a=1, b=2, c=3)
132 data = dict(a=11, b=12, c=13)
133 jdata = jsonutils.dumps(data)
135 fake = FakeSchedulerOptions(last_checked, now, file_old, file_now,
136 old_data, jdata)
137 self.assertEqual(data, fake.get_configuration('foo.json'))
138 self.assertTrue(fake.file_was_loaded)