Example #1
0
def fullrun():
    controller =  Controller(DEVICE_TYPE, STATION_ID, STATION_INDEX)
    result = controller.executeScenario()
    print(result)
Example #2
0
class MainWindowClass(QtWidgets.QMainWindow, form_class):
    def __init__(self, parent=None):
        QtWidgets.QMainWindow.__init__(self, parent)
        self.setupUi(self)
        self.startButton.clicked.connect(self.start)
        self.startButton.setStyleSheet("background-color: green;")

        title = "ATE Station %s-%s" % (STATION_ID, STATION_INDEX)
        self.setWindowTitle(title)

        self.input2LineEdit.hide()
        self.input2Label.hide()
        self.input1LineEdit.setFocus()
        self.controller = Controller(DEVICE_TYPE, STATION_ID, STATION_INDEX)

        if STATION_ID == '1':
            self.input1Label.setText("Internal Serial Number (PCB)")

            self.input2Label.show()
            self.input2Label.setText("SMT Serial Number")
            self.input2LineEdit.show()
            self.input2LineEdit.setMaxLength(11)

            self.input3Label.hide()
            self.input3LineEdit.hide()

        elif STATION_ID == '2':
            self.input1Label.setText("Internal Serial Number (PCB)")

            self.input2Label.show()
            self.input2Label.setText("E-INK Lot Number")
            self.input2LineEdit.show()
            self.input2LineEdit.setMaxLength(25)

            # Hide the Heart Rate Serial Number
            self.input3Label.hide()
            self.input3LineEdit.hide()

        elif STATION_ID == '3':
            # Setup the Internal serial number label and line edit input
            self.input1Label.setText("Internal Serial Number (PCB)")
            self.input1LineEdit.show()
            self.input1LineEdit.setMaxLength(SERIAL_NUMBER_LENGTH)

            # Setup the packaging serial number length and line edit input
            self.input2LineEdit.setMaxLength(SERIAL_NUMBER_LENGTH)
            self.input2Label.setText("Packaging Serial Number")
            self.input2Label.show()
            self.input2LineEdit.show()

            self.input3Label.setText("Heart Rate Serial Number")
            self.input3Label.show()
            self.input3LineEdit.show()
            # Set focus to the HR SN when the GUI is loaded.
            self.input3LineEdit.setFocus()

    def updateGui(self):
        QtWidgets.QApplication.processEvents()

    def keyPressEvent(self, event):
        """
        This function detects if the Enter or Return key is pressed and calls the
        start() function.
        """
        if event.key() == QtCore.Qt.Key_Enter or event.key(
        ) == QtCore.Qt.Key_Return:
            self.start()

    def start(self):

        ateConfig.log.logger.debug('Scenario Attributes ' +
                                   str(Scenario.ateTestAttr))
        # Clear all of the Scenario attributes.
        Scenario.clearAteTestAttrs()
        ateConfig.log.logger.debug('Cleared Scenario Attributes ' +
                                   str(Scenario.ateTestAttr))

        testsFailed = None
        testFailedData = None
        self.__setStatusLabel(4)
        self.updateGui()
        serial_num = ''
        serial_num_internal = ''
        serial_num_smt = ''
        serial_num_hr = ''
        if STATION_ID == '1' or STATION_ID == '2' or STATION_ID == '2.5':
            self.serial_num_internal = self.input1LineEdit.text()
            serial_num_internal = str(self.input1LineEdit.text())
            self.serial_num_smt = self.input2LineEdit.text()
            serial_num_smt = str(self.input2LineEdit.text())
            self.serial_num = None
            serial_num = None
            Scenario.ateTestAttr['SMT_serial_number'] = serial_num_smt
            Scenario.ateTestAttr[
                'internal_serial_number'] = serial_num_internal

            if STATION_ID == '2':
                Scenario.ateTestAttr['EInkLotNumber'] = str(
                    self.input2LineEdit.text())

        elif STATION_ID == '3':
            # Get the packaging serial number
            self.serial_num_internal = self.input1LineEdit.text()
            serial_num_internal = str(self.input1LineEdit.text())
            # Get the internal serial number.
            self.serial_num = self.input2LineEdit.text()
            serial_num = str(self.input2LineEdit.text())
            # get the heart rate serial number.
            self.heartRateSerialNumber = str(self.input3LineEdit.text())
            self.serial_num_hr = self.heartRateSerialNumber
            serial_num_hr = self.heartRateSerialNumber
            Scenario.ateTestAttr[
                'internal_serial_number'] = serial_num_internal
            Scenario.ateTestAttr['serial_number'] = serial_num
            # Scenario.ateTestAttr['SMT_serial_number'] = serial_num_smt
            Scenario.ateTestAttr['serial_number_heart_rate'] = serial_num_hr
            serial_num_smt = serial_num_hr

        #Enable serial number check
        (validSerialNumber, serial_num, serial_num_internal,
         serial_num_hr) = serialNumberCheck(serial_num, serial_num_internal,
                                            serial_num_smt)

        # validSerialNumber = True
        if validSerialNumber:
            # Set current local time
            os.environ['TZ'] = TIMEZONE
            time.tzset()
            curr_time = datetime.datetime.now()
            print("\nCurrent local time is %s\n" %
                  datetime.datetime.strftime(curr_time, "%Y-%m-%d %H:%M:%S"))

            for x in range(0, 1):
                (status, testsFailed) = self.controller.executeScenario()

        else:
            status = 3
        print('Status: {}'.format(status))
        self.__setStatusLabel(status, testsFailed)

        self.input1LineEdit.setText("")
        self.input2LineEdit.setText("")
        self.input3LineEdit.setText("")
        if STATION_ID == '1' or STATION_ID == '2':
            self.input1LineEdit.setFocus()
        elif STATION_ID == '3':
            self.input3LineEdit.setFocus()

    def __setStatusLabel(self, success, testsFailed=None):

        self.statusTextBrowser.setStyleSheet("font-size: 13pt")
        if success == 0:
            self.statusTextBrowser.setText("SUCCESS")
            self.statusTextBrowser.setStyleSheet("background-color: green;")
            print("Success!")
        elif success == 2:
            self.statusTextBrowser.setText(
                'Tests succeeded, Raspberry Pi not connected to internet')
            self.statusTextBrowser.setStyleSheet("background-color: yellow;")
            print("Tests succeeded, Raspberry Pi not connected to internet.")
        elif success == 3:
            self.statusTextBrowser.setText(
                "Invalid serial number! Try rescanning the barcode.")
            self.statusTextBrowser.setStyleSheet("background-color: blue;")
            print("Check errors")
        elif success == 4:
            self.statusTextBrowser.setText("Tests running...")
            self.statusTextBrowser.setStyleSheet("background-color: gray;")
        elif success == 5:
            self.statusTextBrowser.setText(testsFailed)

            self.statusTextBrowser.setStyleSheet("background-color: yellow;")
            self.updateGui()
            time.sleep(1)
            self.statusTextBrowser.setStyleSheet("background-color: gray;")
            self.updateGui()
            time.sleep(1)
            self.statusTextBrowser.setStyleSheet("background-color: yellow;")
        elif success == 6:
            self.statusTextBrowser.setText(testsFailed)
            self.statusTextBrowser.setStyleSheet("background-color: red;")
            print("No record for this device in database.")
        else:
            errorMessage = "Tests Failed:\n"

            try:
                # Display the failure code and text for the operator
                for test in testsFailed:
                    errorMessage += '==================================================\n'
                    testId = ateConfig.ateTestIdMap[str(test['testClassName'])]
                    errorMessage += testId + ':  ' + str(
                        test['name']) + '\n' + str(test['data']) + '\n'

                    if 'error' in test:
                        errorMessage += '\n' + 'Error: ' + str(
                            test['error']) + '\n'

            except Exception as exc:
                ateConfig.log.logger.error(sys.exc_info())
                ateConfig.log.logger.error('\n'.join(traceback.format_stack()))

            self.statusTextBrowser.setText(errorMessage)
            self.statusTextBrowser.setStyleSheet("background-color: red;")

            print("Tests failed")
        print(
            "\n==============================================================\n"
        )
        self.updateGui()