def test_save_elements_count_limit(self):
        entry = Problems2Entry(self.bus, self.p2_entry_path)

        too_many_elements = dict()
        for i in range(get_dbus_limit_elements_count() + 1):
            too_many_elements[str(i)] = str(i)

        entry.SaveElements(too_many_elements, 0)
        elements = entry.getproperty("Elements")
        saved = False
        ignored = False
        for i in range(get_dbus_limit_elements_count() + 1):
            if str(i) in elements:
                saved = True
            else:
                ignored = True

        self.assertTrue(saved,
                        "SaveElements: saved as many as possible")
        self.assertTrue(ignored,
                        "SaveElements: did not save elements over limit")

        for i in range(get_dbus_limit_elements_count() + 1):
            key = str(get_dbus_limit_elements_count() + 1 + i)
            ed = {key: str(i + 1)}
            try:
                entry.SaveElements(ed, 0)
                data = entry.ReadElements([key], 0)
            except dbus.exceptions.DBusException as ex:
                print(key)
                raise ex
            self.assertNotIn(key,
                             data,
                             "SaveElements: did not create new elements")

        overwrites = False
        for i in range(get_dbus_limit_elements_count() + 1):
            ed = {str(i): str(i + 2)}
            try:
                entry.SaveElements(ed, 0)
                overwrites = True
            except dbus.exceptions.DBusException as ex:
                self.assertEqual(
                    "org.freedesktop.DBus.Error.LimitsExceeded: "
                    "Too many elements",
                    str(ex))
                break

        self.assertTrue(overwrites,
                        "SaveElements allows to overwrite element "
                        "despite Elements count limit")
Exemple #2
0
    def test_new_problem_elements_count_limit(self):
        too_many_elements = dict()
        for i in range(get_dbus_limit_elements_count() + 1):
            too_many_elements[str(i)] = str(i)

        task_path = self.p2.NewProblem(too_many_elements, 0x1)
        self.assertRaisesProblems2Exception(
                "Failed to create "
                "new problem directory: Too many elements",
                wait_for_task_new_problem, self, self.bus, task_path)