R/q.validation.R

Defines functions q.validation

Documented in q.validation

q.validation <- function(type='fail')
{
  # find out test failed for validation
  fail.test <- q.ls(type, detail = TRUE)

  if(is.null(fail.test)) return(NULL)

  fail.test <- fail.test  %>% filter(auto.recovery == TRUE)

  N.FAIL <- nrow(fail.test)

  if( N.FAIL > 0 )
  {
    message(sprintf('Validating %s issues', N.FAIL) )
    Validate.JID <- basename(fail.test$jid)

    do.validation <-function(i)
    {
      # jid <- q.run(fail.test$jid[i])
      jid <- q.move(fail.test$jid[i], to='inbox')
      return(jid)
    }

    # re-validate test
    VALIDATION.ITEM <- unlist( lapply(1:N.FAIL, do.validation))
    q.wait(Validate.JID, timer=10)


    if(is.null(fail.test))
    {
      message('Validation completed\t [Pass]')
      return(NULL)
    } else
    {
      fail.test.after  <- q.ls('fail', detail = TRUE)
      if(is.null(fail.test.after))
        return(NULL)

      fail.test.after  <- fail.test.after  %>% filter(auto.recovery == TRUE) %>%
        filter(jid %in% Validate.JID)

      N.FAIL.AFTER <- nrow(fail.test.after)
      message(sprintf("%s remaining for validation", N.FAIL.AFTER))

      if(N.FAIL.AFTER == N.FAIL)
      {
        message("** Identified issues **")
        for (item in fail.test.after$jid)
        {
          load(item)
          ticket$auto.recovery = FALSE  # Terminal condition
          save(ticket, file=item)
        }
      }
    }
  } else
    message('No validation required for now!')

  return(NULL)
}
okux/qrmarkdown documentation built on Dec. 22, 2021, 4:17 a.m.