def generate_units_pie_chart_by_status(self, charts_path, width=300, height=300): chart = pygal.Pie(width=width, height=height, no_data_text=u'No unit') chart.title = u'Number of {0} {1} nodes'.format(self.environment_type, self.service_label) for states in (py_juju.ERROR_STATES, py_juju.STARTED_STATES, py_juju.PENDING_STATES): units_number = sum((self.units_current.get(state, pygal_deque()).last or 0) for state in states) chart.add(u'{0} {1}'.format(units_number, states[0]), units_number) return self._write_own_chart(chart, charts_path, u'pie_units', add_x_labels=False)
def __init__(self, environment=None, service=None, time=None, units_planned=None, units_current=None, tasks_current=None, unknown_states=None, maxlen=100, simulate=False, simulated_units_start_latency_range=None, simulated_units_stop_latency_range=None, simulated_tasks_per_unit_range=None, simulated_tasks_divider=None): self.environment, self.service = environment, service self.time = time or deque(maxlen=maxlen) self.units_planned = units_planned or pygal_deque(maxlen=maxlen) self.units_current = units_current or {state: pygal_deque(maxlen=maxlen) for state in py_juju.ALL_STATES} self.tasks_current = tasks_current or {status: pygal_deque(maxlen=maxlen) for status in self.tasks_status} self.unknown_states = defaultdict(int) self.simulate = simulate self.simulated_units = SimulatedUnits(simulated_units_start_latency_range or (10, 13), simulated_units_stop_latency_range or (1, 2)) self.simulated_tasks_per_unit_range = simulated_tasks_per_unit_range or (2, 3) self.simulated_tasks_divider = simulated_tasks_divider or self.simulated_tasks_per_unit_range[1] self.simulated_tasks_progress = 0
def test_pygal_deque(self): p = pygal_deque(maxlen=4) p.append(5) self.list_equal(p.list(fill=False), [5]) p.append(5) p.append(5) self.list_equal(p.list(fill=False), [5, None, 5]) p.append(5) self.list_equal(p.list(fill=False), [5, None, None, 5]) p.append(5) self.list_equal(p.list(fill=False), [5, None, None, 5]) p.append(None) self.list_equal(p.list(fill=False), [5, None, None, 5]) p.append(None) self.list_equal(p.list(fill=False), [5, None, None, 5]) p.append(5) self.list_equal(p.list(fill=False), [5, None, None, 5]) self.list_equal(p.list(fill=True), [5, 5, 5, 5]) p.append(1) self.list_equal(p.list(fill=False), [5, None, 5, 1]) p.append(None) self.list_equal(p.list(fill=False), [5, 5, 1, 1]) p.append(None) self.list_equal(p.list(fill=False), [5, 1, None, 1]) self.list_equal(p.list(fill=True), [5, 1, 1, 1]) p.append(None) self.list_equal(p.list(fill=False), [1, None, None, 1]) p.append(2) p.append(3) self.list_equal(p.list(fill=False), [1, 1, 2, 3]) p.append(None) p.append(2) self.list_equal(p.list(fill=False), [2, 3, 3, 2])
def test_pygal_deque(self): p = pygal_deque(maxlen=4) p.append(5) self.assertListEqual(p.list(fill=False), [5]) p.append(5) p.append(5) self.assertListEqual(p.list(fill=False), [5, None, 5]) p.append(5) self.assertListEqual(p.list(fill=False), [5, None, None, 5]) p.append(5) self.assertListEqual(p.list(fill=False), [5, None, None, 5]) p.append(None) self.assertListEqual(p.list(fill=False), [5, None, None, 5]) p.append(None) self.assertListEqual(p.list(fill=False), [5, None, None, 5]) p.append(5) self.assertListEqual(p.list(fill=False), [5, None, None, 5]) self.assertListEqual(p.list(fill=True), [5, 5, 5, 5]) p.append(1) self.assertListEqual(p.list(fill=False), [5, None, 5, 1]) p.append(None) self.assertListEqual(p.list(fill=False), [5, 5, 1, 1]) p.append(None) self.assertListEqual(p.list(fill=False), [5, 1, None, 1]) self.assertListEqual(p.list(fill=True), [5, 1, 1, 1]) p.append(None) self.assertListEqual(p.list(fill=False), [1, None, None, 1]) p.append(2) p.append(3) self.assertListEqual(p.list(fill=False), [1, 1, 2, 3]) p.append(None) p.append(2) self.assertListEqual(p.list(fill=False), [2, 3, 3, 2])
def test_pygal_deque(): data = pygal_deque(maxlen=4) data.append(5) assert data.list(fill=False) == [5] data.append(5) data.append(5) assert data.list(fill=False) == [5, None, 5] data.append(5) assert data.list(fill=False) == [5, None, None, 5] data.append(5) assert data.list(fill=False) == [5, None, None, 5] data.append(None) assert data.list(fill=False) == [5, None, None, 5] data.append(None) assert data.list(fill=False) == [5, None, None, 5] data.append(5) assert data.list(fill=False) == [5, None, None, 5] assert data.list(fill=True) == [5, 5, 5, 5] data.append(1) assert data.list(fill=False) == [5, None, 5, 1] data.append(None) assert data.list(fill=False) == [5, 5, 1, 1] data.append(None) assert data.list(fill=False) == [5, 1, None, 1] assert data.list(fill=True) == [5, 1, 1, 1] data.append(None) assert data.list(fill=False) == [1, None, None, 1] data.append(2) data.append(3) assert data.list(fill=False) == [1, 1, 2, 3] data.append(None) data.append(2) assert data.list(fill=False) == [2, 3, 3, 2]
def test_pygal_deque(self): p = pygal_deque(maxlen=4) p.append(5) assert_equal(p.list, [5]) p.append(5) p.append(5) assert_equal(p.list, [5, None, 5]) p.append(5) assert_equal(p.list, [5, None, None, 5]) p.append(5) assert_equal(p.list, [5, None, None, 5]) p.append(None) assert_equal(p.list, [5, None, None, 5]) p.append(None) assert_equal(p.list, [5, None, None, 5]) p.append(5) assert_equal(p.list, [5, None, None, 5]) p.append(1) assert_equal(p.list, [5, None, 5, 1]) p.append(None) assert_equal(p.list, [5, 5, 1, 1]) p.append(None) assert_equal(p.list, [5, 1, None, 1]) p.append(None) assert_equal(p.list, [1, None, None, 1]) p.append(2) p.append(3) assert_equal(p.list, [1, 1, 2, 3]) p.append(None) p.append(2) assert_equal(p.list, [2, 3, 3, 2])