Пример #1
0
 def test_push(self):
     mgr = StateManager()
     for _ in range(10):
         mgr.push_state(State())
     for _ in range(10):
         mgr.pop_state()
     self.assertTrue(mgr.states == [])
Пример #2
0
def start_state_manager(bad_things_queue, state_queue, runtime_pipe):
    try:
        state_manager = StateManager(bad_things_queue, state_queue,
                                     runtime_pipe)
        state_manager.start()
    except Exception as e:
        bad_things_queue.put(
            BadThing(sys.exc_info(),
                     str(e),
                     event=BAD_EVENTS.STATE_MANAGER_CRASH))
Пример #3
0
    def __init__(self, parent=None):
        #super(MainWidget,self).__init__()
        QWidget.__init__(self, parent)  # burada bir hata var

        self.setupUi(self)
        self.parent = parent

        self._selectedGroups = []
        self._preexceptions = []
        self._postexceptions = []

        self.state = StateManager(self)
        self.currentState = None
        self.completer = None
        self._updatesCheckedOnce = False

        # Search Thread
        self._searchThread = PThread(self, self.startSearch,
                                     self.searchFinished)

        self.statusUpdater = StatusUpdater()
        self.basket = BasketDialog(self.state, self.parent)
        self._postexceptions.append(lambda: self.basket.setActionEnabled(True))
        self.searchButton.setIcon(KIcon(("edit-find", "find")))
        self.initializeUpdateTypeList()

        model = PackageModel(self)
        proxy = PackageProxy(self)
        proxy.setSourceModel(model)
        self.packageList.setModel(proxy)
        self.packageList.setItemDelegate(PackageDelegate(self, self.parent))
        self.packageList.setColumnWidth(0, 32)

        #burada hata alabilirim
        self.packageList.model().dataChanged[QModelIndex, QModelIndex].connect(
            self.statusChanged)

        self.packageList.updateRequested.connect(self.initialize)

        self.updateSettings()
        self.setActionButton()

        self.operation = OperationManager(self.state)

        self.progressDialog = ProgressDialog(self.state, self.parent)
        self._preexceptions.append(self.progressDialog._hide)
        self.progressDialog.registerFunction(
            FINISHED, lambda: self.parent.statusBar().setVisible(
                not self.progressDialog.isVisible()))
        self.progressDialog.registerFunction(
            OUT, lambda: self.parent.statusBar().show())
        self.summaryDialog = SummaryDialog()

        self.connectOperationSignals()
        self.pdsMessageBox = PMessageBox(self.content)
Пример #4
0
 def __init__(self, parent=None):
     QtGui.QWidget.__init__(self, parent)
     self.setupUi(self)
     self.searchButton.setIcon(KIcon("edit-find"))
     self.statusUpdater = StatusUpdater()
     self.state = StateManager(self)
     self.session = SessionManager()
     self.basket = BasketDialog(self.state)
     self.initialize()
     self.setSelectAll()
     self.actionButton.setIcon(self.state.getActionIcon())
     self.operation = OperationManager(self.state)
     self.progressDialog = ProgressDialog(self.state)
     self.summaryDialog = SummaryDialog()
     self.connectMainSignals()
     self.connectOperationSignals()
Пример #5
0
def test_dynamic():
    """Test the state manager's LTL generation."""
    global TEST_WORLD_MAP
    orders = eval(
        """[('search', {'Theme': 'user_1', 'Location': 'library'}), ('search', {'Theme': 'user_1', 'Location': 'classroom'}), ('retrieve', {'Source': 'user_1', 'Theme': 'defuser'}), ('go', {'Theme': '*', 'Location': 'hall'})]"""
    )

    smgr = StateManager()
    smgr.set_basedir(LTLGEN_BASE_DIR)
    smgr.set_publisher(FakePublisher)
    smgr.location = INIT_ROOM

    # Add some rooms and synthesize
    new_rooms = ["room" + str(num) for num in range(15)]
    new_world_map = (TEST_WORLD_MAP[0] + new_rooms,
                     TEST_WORLD_MAP[1] + [("hall", room)
                                          for room in new_rooms])
    # Sneakily replace this under the tester's nose
    TEST_WORLD_MAP = new_world_map
    smgr.process_orders(orders, None, True, new_world_map)
    test_smgr(smgr)
Пример #6
0
def test_fixed(aut_path):
    """Test the state manager on a fixed automaton."""
    smgr = StateManager()
    smgr.set_publisher(FakePublisher)
    smgr.load_test_automaton(aut_path, True)
    test_smgr(smgr)
Пример #7
0
    def __init__(self, app=None, packages=[], hide_summary=False):
        QDialog.__init__(self, None)
        self.setupUi(self)

        self.hide_summary = hide_summary
        self.state = StateManager(self)
        self.iface = self.state.iface
        self.state._selected_packages = packages
        self._packages = packages[:]
        self._started = False

        self._postexceptions = [lambda: sys.exit(1)]

        # Check if another pisi instance already running
        if isPisiRunning():
            self.exceptionCaught("ALREADY RUNNING", block=True)

        # Check given package names available in repositories
        if not any(package.endswith('.pisi') for package in packages):
            available_packages = self.state.packages()
            for package in packages:
                if package not in available_packages:
                    self.exceptionCaught('HTTP Error 404', package, block=True)

        # Check if local/remote packages mixed with repo packages
        # which pisi does not support to handle these at the same time
        else:
            if not all(package.endswith('.pisi') for package in packages):
                self.exceptionCaught('MIXING PACKAGES', block=True)

            # Check given local packages if exists
            for package in get_real_paths(packages):
                if '://' not in package and package.endswith('.pisi'):
                    if not os.path.exists(package):
                        self.exceptionCaught('FILE NOT EXISTS',
                                             package,
                                             block=True)

        self.state.state = StateManager.INSTALL

        # Get a list of package names from given args.
        # It may include a path to local package, a path to remote package
        # or just a package name; following crypted code will remove
        # remote paths, appends package name as is and uses the pisi.api
        # to get package name from given local package path.
        #
        # Example:
        # input : ['/tmp/ax-2.3-1.pisi', 'http://pardus.org.tr/tt-2.3.pisi', 'yali']
        # output: ['ax', 'yali']
        _pkgs = map(lambda x: pisi.api.info_file(x)[0].package.name \
                        if x.endswith('.pisi') \
                        else x, filter(lambda x: '://' not in x,
                                        get_real_paths(self.state._selected_packages)))

        _pkgs = filter(lambda x: self.iface.pdb.has_package(x), _pkgs)

        extras = self.state.iface.getExtras(_pkgs, self.state.state)
        if extras:
            self.state._selected_packages.extend(extras)

        self.model = PackageModel(self)
        self.model.setCheckable(False)

        proxy = PackageProxy(self)
        proxy.setSourceModel(self.model)

        self.packageList.setModel(proxy)
        self.packageList.setPackages(packages)
        self.packageList.selectAll(packages)
        self.packageList.setItemDelegate(
            PackageDelegate(self, self, showDetailsButton=False))
        self.packageList.setColumnWidth(0, 32)
        self.packageList.hideSelectAll()

        self.operation = OperationManager(self.state)
        self.progressDialog = ProgressDialog(self.state, self)
        self.summaryDialog = SummaryDialog()

        self.connectOperationSignals()

        self.button_install.clicked.connect(self.installPackages)
        self.button_install.setIcon(KIcon(("list-add", "add")))

        self.button_cancel.clicked.connect(self.actionCancelled)
        self.button_cancel.setIcon(KIcon("cancel"))

        self.rejected.connect(self.actionCancelled)