def test_C_MAC(self):
        T = ConnectionToDUT()
        self.dev_type = config_parser.get('unit_parameters', 'device_type')
        if self.dev_type.upper() == "SOM":
            out, err, sh, client = T.RunRemoteCommands("ifconfig | grep 'HWaddr' | awk -F'HWaddr ' '{print $2}'")
        if self.dev_type.upper() == "PC":
            out, err, sh, client = T.RunRemoteCommands("ifconfig | grep ether | awk -F'ether ' '{print $2}' | awk -F' ' '{print $1}'")
        if self.dev_type.upper() == "ANT":
            out, err, sh, client = T.RunRemoteCommands("ifconfig | grep 'HWaddr' | awk -F'HWaddr ' '{print $2}'")
        T.CloseSSHConnection(sh, client)

        logging.info('start check MAC address value')
        self.mac=self.driver.find_element_by_xpath("//input[@id='macAddress']")
        self.mac_dashboard=self.mac.get_attribute('value').strip()
        logging.info("The value of MAC address that appear on Dashboard is : {s}".format(s=self.mac_dashboard))

        #self.real_hostname = out.strip()
        self.real_mac = out.strip()
        logging.info("The real MAC address on device is : {s}".format(s=self.real_mac))
        try:
            self.assertEqual(self.mac_dashboard, self.real_mac)
            logging.info("The MAC address is as expected !! ---  PASS")
        #except Exception as e:
        except AssertionError as e:
            logging.error("The found MAC address is not as expected ---  FAIL ")
            logging.error(e)
            raise e
    def test_D_farmID(self):
        T = ConnectionToDUT()
        self.dev_type = config_parser.get('unit_parameters', 'device_type')
#        if self.dev_type.upper() == "SOM":
        out, err, sh, client = T.RunRemoteCommands("mysql -uroot -pscrscr scr -e 'select pvalue from scrproperties where id=16;' | tail -n 1")
        T.CloseSSHConnection(sh, client)

        logging.info('start check farmID value')
        self.farmid=self.driver.find_element_by_xpath("//input[@id='farmId']")
        self.farmid_dashboard=self.farmid.get_attribute('value').strip()
        logging.info("The value of farmid that appear on Dashboard is : {s}".format(s=self.farmid_dashboard))

        #self.real_hostname = out.strip()
        self.real_farmid = out.strip()
        if self.farmid_dashboard == "No Farm ID" :
            self.farmid_dashboard="NULL"
            logging.info("The value 'No Farm ID == NULL'")
        logging.info("The real farmid on device is : {s}".format(s=self.real_farmid))
        try:
            self.assertEqual(self.farmid_dashboard, self.real_farmid)
            logging.info("The farmId is as expected !! ---  PASS")
        #except Exception as e:
        except AssertionError as e:
            logging.error("The found farmId is not as expected ---  FAIL ")
            logging.error(e)
            raise e
 def test_A_serial_number(self):
     T=ConnectionToDUT()
     out, err, sh, client = T.RunRemoteCommands("cat /usr/local/board/medical_file.txt | grep assembly.cat | awk -F'=' '{print $2}' | awk -F',' '{print $1}'")
     T.CloseSSHConnection(sh, client)
     T = ConnectionToDUT()
     out2, err2, sh2, client2 = T.RunRemoteCommands("cat /usr/local/board/medical_file.txt | grep assembly.sn | awk -F'=' '{print $2}' | awk -F',' '{print $1}'")
     T.CloseSSHConnection(sh2, client2)
     self.dashboard_url = self.admintool_url + "/#/pages/dashboard"
     logging.info('check if we located at dashboard')
     logging.info(self.dashboard_url)
     try:
         myElem = WebDriverWait(self.driver, 10).until(
             EC.presence_of_element_located((By.CLASS_NAME, 'ng-star-inserted')))
         user = "******"
         try:
             self.assertTrue(user in self.driver.page_source)
             logging.info('check if log-in as rammshtein')
             time.sleep(2)
         except Exception as e:
             logging.error("The log-in as rammshtein is ---  FAIL ")
             logging.error(e)
             raise e
     except Exception as e:
         logging.error("Loading took too much time ---  FAIL ")
         logging.error(e)
         raise e
     logging.info('start check serial number')
     self.sn = self.driver.find_element_by_xpath("//input[@id='serialNumber']")
     self.sn_dashboard=self.sn.get_attribute('value').strip()
     logging.info("The Serial number that AdminTool found is : {s}".format(s=self.sn.get_attribute('value')))
     self.real_serial_number=out.strip() + out2.strip()
     logging.info("The real Serial number on device is : {s}".format(s=self.real_serial_number))
     try:
         self.assertEqual(self.sn_dashboard,self.real_serial_number)
         logging.info("The Serial Number is as expected !! ---  PASS")
     except Exception as e:
         logging.error("The found Serial number is not as expected ---  FAIL ")
         logging.error(e)
         raise e
 def test_L_ShowDeviceType(self):
     T = ConnectionToDUT()
     # "'%d/%m/%Y %H:%M'"
     out, err, sh, client = T.RunRemoteCommands("date +'%d/%m/%Y %H:%M'")
     T.CloseSSHConnection(sh, client)
     logging.info('start check device time on adminTool at UTC format')
     self.datetime = self.driver.find_element_by_xpath("//span[@class='font-weight-bolder ml-1 ng-star-inserted']")
     logging.info("The date time value that AdminTool show is : {s}".format(s=self.datetime.text))
     curr_sys_datetime = out.rstrip() + " UTC"
     logging.info("The value of date time we get from system is : {s}".format(s=curr_sys_datetime))
     try:
         self.assertEqual(self.datetime.text, curr_sys_datetime)
         logging.info("The value of AdminTool is equal to system date time value")
     except AssertionError as e:
         logging.error("The date time value that AdminTool show is not equal to real system clock !")
         logging.error(e)
         raise e
 def test_G_EmbVersion(self):
     self.dev_type = config_parser.get('unit_parameters', 'device_type')
     if self.dev_type == "PC":
         raise unittest.SkipTest(logging.warning("No Embedded version on PC, skip test of checking Embedded version"))
     T = ConnectionToDUT()
     #        self.dev_type.upper() == "SOM":
     out, err, sh, client = T.RunRemoteCommands("cat /usr/local/pref/versions/package_versions.txt  | grep 'Package' | awk -F'Package ' '{print $2}'")
     T.CloseSSHConnection(sh, client)
     logging.info('start check Embedded version value')
     self.EmbVer = self.driver.find_element_by_xpath("//input[@id='embeddedSWVersion']")
     self.EmbVer_dashboard = self.EmbVer.get_attribute('value').strip()
     logging.info("The Embedded version value that appear on Dashboard is : {s}".format(s=self.EmbVer_dashboard))
     self.real_EmbVer = out.strip()
     logging.info("The real Emb version on device is : {s}".format(s=self.real_EmbVer))
     try:
         self.assertEqual(self.EmbVer_dashboard, self.real_EmbVer)
         logging.info("The real Embedded version is as expected !! ---  PASS")
     # except Exception as e:
     except AssertionError as e:
         logging.error("The real Embedded version is not as expected ---  FAIL ")
         logging.error(e)
         raise e
    def test_F_FSVersion(self):
        self.dev_type = config_parser.get('unit_parameters', 'device_type')
        if self.dev_type=="ANT":
            raise unittest.SkipTest(logging.warning("No FS version on Antenna, skip test of checking FS version"))
        T = ConnectionToDUT()
#        self.dev_type.upper() == "SOM":
        out, err, sh, client = T.RunRemoteCommands("cat /mnt/usb/fsversion/version")
        T.CloseSSHConnection(sh, client)
        logging.info('start check FS version value')
        self.FSVer = self.driver.find_element_by_xpath("//input[@id='farmServerVersion']")
        self.FSVer_dashboard = self.FSVer.get_attribute('value').strip()
        logging.info("The Farm Server version value that appear on Dashboard is : {s}".format(s=self.FSVer_dashboard))
        self.real_FSVer = out.strip()
        logging.info("The real FS  version on device is : {s}".format(s=self.real_FSVer))
        try:
            self.assertEqual(self.FSVer_dashboard, self.real_FSVer)
            logging.info("The real FS version is as expected !! ---  PASS")
        # except Exception as e:
        except AssertionError as e:
            logging.error("The real FS version is not as expected ---  FAIL ")
            logging.error(e)
            raise e
    def test_B_hostname(self):
        T = ConnectionToDUT()
        out, err, sh, client = T.RunRemoteCommands("echo $HOSTNAME")
        T.CloseSSHConnection(sh, client)

        ## get username field textbox
        logging.info('start check hostname number')
        self.host=self.driver.find_element_by_xpath("//input[@id='hostName']")
        self.host_dashboard=self.host.get_attribute('value').strip()
        logging.info("The value of Hostname that appear on Dashboard is : {s}".format(s=self.host_dashboard))

        #self.real_hostname = out.strip()
        self.real_hostname = out.strip()
        logging.info("The real Hostname on device is : {s}".format(s=self.real_hostname))
        try:
            self.assertEqual(self.host_dashboard, self.real_hostname)
            logging.info("The Hostname is as expected !! ---  PASS")
        #except Exception as e:
        except AssertionError as e:
            logging.error("The found Hostname is not as expected ---  FAIL ")
            logging.error(e)
            raise e
 def test_H_NetworkConf(self):
     self.dev_type = config_parser.get('unit_parameters', 'device_type')
     T = ConnectionToDUT()
     out, err, sh, client = T.RunRemoteCommands("readlink -- '/etc/dhcpcd.conf'")
     T.CloseSSHConnection(sh, client)
     logging.info('start check network configuraion type')
     self.netMode = self.driver.find_element_by_xpath("//input[@id='networkMode']")
     self.netMode_dashboard = self.netMode.get_attribute('value').strip()
     logging.info("The Network mode configuraton that appear on Dashboard is : {s}".format(s=self.netMode_dashboard))
     self.netMode_real=out.strip()
     if ( self.netMode_real == "/etc/dhcpcd.conf.dhcp"):
         self.netMode_real="Dynamic IP (DHCP)"
     else:
         self.netMode_real = "Static Ip"
     logging.info("The real Network mode configuration on device is : {s}".format(s=self.netMode_real))
     try:
         self.assertEqual(self.netMode_dashboard, self.netMode_real)
         logging.info("The real Network Mode is as expected !! ---  PASS")
     # except Exception as e:
     except AssertionError as e:
         logging.error("The real Network Mode is not as expected ---  FAIL ")
         logging.error(e)
         raise e
    def test_E_imageVersion(self):
        T = ConnectionToDUT()
        self.dev_type = config_parser.get('unit_parameters', 'device_type')
        #        if self.dev_type.upper() == "SOM":
        out, err, sh, client = T.RunRemoteCommands("cat /root/image_version.txt")
        T.CloseSSHConnection(sh, client)

        logging.info('start check image version value')
        self.imageVer = self.driver.find_element_by_xpath("//input[@id='imageVersion']")
        self.imageVer_dashboard = self.imageVer.get_attribute('value').strip()
        logging.info("The image version value that appear on Dashboard is : {s}".format(s=self.imageVer_dashboard))

        # self.real_hostname = out.strip()
        self.real_imageVer = out.strip()
        logging.info("The real image version on device is : {s}".format(s=self.real_imageVer))
        try:
            self.assertEqual(self.imageVer_dashboard, self.real_imageVer)
            logging.info("The real image version is as expected !! ---  PASS")
        # except Exception as e:
        except AssertionError as e:
            logging.error("The found real image version is not as expected ---  FAIL ")
            logging.error(e)
            raise e