SEBSERV-334 fixed
This commit is contained in:
parent
335cab3783
commit
e3c42fa44a
4 changed files with 25 additions and 33 deletions
|
@ -77,7 +77,7 @@ public interface ExamSessionService {
|
|||
/** Use this to check if a specified Exam has currently active SEB Client connections.
|
||||
*
|
||||
* Active SEB Client connections are established connections that are not yet closed and
|
||||
* connection attempts that are older the a defined time interval.
|
||||
* open connection attempts.
|
||||
*
|
||||
* @param examId The Exam identifier
|
||||
* @return true if the given Exam has currently no active client connection, false otherwise. */
|
||||
|
@ -86,7 +86,7 @@ public interface ExamSessionService {
|
|||
return false;
|
||||
}
|
||||
|
||||
return !this.getActiveConnectionTokens(examId)
|
||||
return !this.getAllActiveConnectionTokens(examId)
|
||||
.getOrThrow()
|
||||
.isEmpty();
|
||||
}
|
||||
|
@ -184,13 +184,21 @@ public interface ExamSessionService {
|
|||
final Long examId,
|
||||
final Predicate<ClientConnectionData> filter);
|
||||
|
||||
/** Gets all connection tokens of active client connection that are related to a specified exam
|
||||
/** Gets all connection tokens of client connection that are in ACTIVE state and related to a specified exam
|
||||
* from persistence storage without caching involved.
|
||||
*
|
||||
* @param examId the exam identifier
|
||||
* @return Result refer to the collection of connection tokens or to an error when happened. */
|
||||
Result<Collection<String>> getActiveConnectionTokens(Long examId);
|
||||
|
||||
/** Gets all connection tokens of client connections that are in an active state. See <code>ClientConnection</code>
|
||||
* And that are related to a specified exam.
|
||||
* There is no caching involved here, gets actual data from persistent storage
|
||||
*
|
||||
* @param examId the exam identifier
|
||||
* @return Result refer to the collection of connection tokens or to an error when happened. */
|
||||
Result<Collection<String>> getAllActiveConnectionTokens(Long examId);
|
||||
|
||||
/** Use this to check if the current cached running exam is up to date
|
||||
* and if not to flush the cache.
|
||||
*
|
||||
|
|
|
@ -430,6 +430,12 @@ public class ExamSessionServiceImpl implements ExamSessionService {
|
|||
.getActiveConnectionTokens(examId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<Collection<String>> getAllActiveConnectionTokens(final Long examId) {
|
||||
return this.clientConnectionDAO
|
||||
.getAllActiveConnectionTokens(examId);
|
||||
}
|
||||
|
||||
@EventListener
|
||||
public void notifyExamFinished(final ExamFinishedEvent event) {
|
||||
|
||||
|
|
|
@ -568,7 +568,6 @@ public class ExamAdministrationController extends EntityController<Exam, Exam> {
|
|||
.of("Exam currently has active SEB Client connections."));
|
||||
}
|
||||
|
||||
// TODO double check before setSEBRestriction
|
||||
return this.checkNoActiveSEBClientConnections(exam)
|
||||
.flatMap(this.sebRestrictionService::applySEBClientRestriction)
|
||||
.flatMap(e -> this.examDAO.setSEBRestriction(exam.id, restrict))
|
||||
|
|
|
@ -254,35 +254,6 @@ public class UseCasesIntegrationTest extends GuiIntegrationTest {
|
|||
// Nothing
|
||||
}
|
||||
|
||||
// @Test
|
||||
// @Order(0)
|
||||
// public void testUsecase00_cleanupAllExams() {
|
||||
// final RestServiceImpl restService = createRestServiceForUser(
|
||||
// "admin",
|
||||
// "admin",
|
||||
// new GetExamNames(),
|
||||
// new DeleteExam());
|
||||
//
|
||||
// final Result<List<EntityName>> call = restService
|
||||
// .getBuilder(GetExamNames.class)
|
||||
// .call();
|
||||
//
|
||||
// if (!call.hasError()) {
|
||||
// call.get().stream().forEach(key -> {
|
||||
// final Result<EntityProcessingReport> deleted = restService
|
||||
// .getBuilder(DeleteExam.class)
|
||||
// .withURIVariable(API.PARAM_MODEL_ID, key.modelId)
|
||||
// .call();
|
||||
//
|
||||
// if (deleted.hasError()) {
|
||||
// System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%% deletion failed: " + key);
|
||||
// } else {
|
||||
// System.out.println("%%%%%%%%%%%%%%%%%%%%%%%%%% deleted: " + key);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
|
||||
@Test
|
||||
@Order(1)
|
||||
// *************************************
|
||||
|
@ -815,6 +786,7 @@ public class UseCasesIntegrationTest extends GuiIntegrationTest {
|
|||
// - Check if there are some quizzes from previous LMS Setup
|
||||
// - Import a quiz as Exam
|
||||
// - get exam page and check the exam is there
|
||||
// - get exam page with none native sort attribute to test this
|
||||
// - edit exam property and save again
|
||||
public void testUsecase07_ImportExam() {
|
||||
final RestServiceImpl restService = createRestServiceForUser(
|
||||
|
@ -922,6 +894,13 @@ public class UseCasesIntegrationTest extends GuiIntegrationTest {
|
|||
.filter(exam -> exam.name.equals(newExam.name))
|
||||
.findFirst().isPresent());
|
||||
|
||||
final Result<Page<Exam>> examsSorted = restService
|
||||
.getBuilder(GetExamPage.class)
|
||||
.withQueryParam(Page.ATTR_SORT, LmsSetup.FILTER_ATTR_LMS_SETUP)
|
||||
.call();
|
||||
|
||||
assertNotNull(examsSorted);
|
||||
assertFalse(examsSorted.hasError());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in a new issue