@Test
  public void testPoll() throws Exception {
    ScheduledQuery schq = createScheduledQuery(new ScheduledQueryKey("q1", "polltest"));
    ScheduledQueryMaintenanceRequest r = new ScheduledQueryMaintenanceRequest();
    r.setType(ScheduledQueryMaintenanceRequestType.CREATE);
    r.setScheduledQuery(schq);
    client.scheduledQueryMaintenance(r);

    schq.setScheduleKey(new ScheduledQueryKey("q1", "polltestOther"));
    client.scheduledQueryMaintenance(r);

    // disabled queries are not considered
    schq.setScheduleKey(new ScheduledQueryKey("q2disabled", "polltest"));
    schq.setEnabled(false);
    client.scheduledQueryMaintenance(r);

    // do some poll requests; and wait for q1's execution
    ScheduledQueryPollRequest request = new ScheduledQueryPollRequest();
    request.setClusterNamespace("polltest");
    ScheduledQueryPollResponse pollResult = null;
    // wait for poll to hit
    for (int i = 0; i < 30; i++) {
      pollResult = client.scheduledQueryPoll(request);
      if (pollResult.isSetQuery()) {
        break;
      }
      Thread.sleep(100);
    }
    assertTrue(pollResult.isSetQuery());
    assertTrue(pollResult.isSetScheduleKey());
    assertTrue(pollResult.isSetExecutionId());
    // after reading the only scheduled query; there are no more queries to run (for 1 sec)
    ScheduledQueryPollResponse pollResult2 = client.scheduledQueryPoll(request);
    assertTrue(!pollResult2.isSetQuery());

    try (PersistenceManager pm = PersistenceManagerProvider.getPersistenceManager()) {
      MScheduledExecution q = pm.getObjectById(MScheduledExecution.class, pollResult.getExecutionId());
      assertNotNull(q);
      assertEquals(QueryState.INITED, q.getState());
      assertTrue(q.getStartTime() <= getEpochSeconds());
      assertTrue(q.getStartTime() >= getEpochSeconds() - 1);
      assertTrue(q.getEndTime() == null);
      assertTrue(q.getLastUpdateTime() <= getEpochSeconds());
      assertTrue(q.getLastUpdateTime() >= getEpochSeconds() - 1);
    }
    // wait 1 sec
    Thread.sleep(1000);

    ScheduledQueryProgressInfo info;
    info = new ScheduledQueryProgressInfo(
        pollResult.getExecutionId(), QueryState.EXECUTING, "executor-query-id");
    client.scheduledQueryProgress(info);

    try (PersistenceManager pm = PersistenceManagerProvider.getPersistenceManager()) {
      MScheduledExecution q = pm.getObjectById(MScheduledExecution.class, pollResult.getExecutionId());
      assertEquals(QueryState.EXECUTING, q.getState());
      assertEquals("executor-query-id", q.getExecutorQueryId());
      assertTrue(q.getLastUpdateTime() <= getEpochSeconds());
      assertTrue(q.getLastUpdateTime() >= getEpochSeconds() - 1);
    }

    // wait 1 sec
    Thread.sleep(1000);

    info = new ScheduledQueryProgressInfo(
        pollResult.getExecutionId(), QueryState.FAILED, "executor-query-id");
    info.setErrorMessage(generateLongErrorMessage());
    //    info.set
    client.scheduledQueryProgress(info);

    try (PersistenceManager pm = PersistenceManagerProvider.getPersistenceManager()) {
      MScheduledExecution q = pm.getObjectById(MScheduledExecution.class, pollResult.getExecutionId());
      assertEquals(QueryState.FAILED, q.getState());
      assertEquals("executor-query-id", q.getExecutorQueryId());
      assertNull(q.getLastUpdateTime());
      assertTrue(q.getEndTime() <= getEpochSeconds());
      assertTrue(q.getEndTime() >= getEpochSeconds() - 1);
      assertTrue(q.getErrorMessage().length() < 2000);
      assertFalse(q.getErrorMessage().contains("x"));
    }

    // clustername is taken into account; this should be empty
    request.setClusterNamespace("polltestSomethingElse");
    pollResult = client.scheduledQueryPoll(request);
    assertFalse(pollResult.isSetQuery());
  }
Simulates some schq failure scenario.

Q1 is executed correctly 1 time; but every further executions are end with failures
Q2 should be executed without without issues even thru Q1 will be disabled at some point
standalone-metastore/metastore-server/src/test/java/org/apache/hadoop/hive/metastore/client/TestMetastoreScheduledQueries.java