openvidu-test-e2e: identify testapp user on each openvidu-browser event

pull/758/head
pabloFuente 2022-11-08 14:20:42 +01:00
parent 6bc8c31af1
commit 0621f205c5
6 changed files with 51 additions and 24 deletions

View File

@ -268,8 +268,9 @@ public class OpenViduEventManager {
private void emitEvents() {
while (!this.eventQueue.isEmpty()) {
JsonObject event = this.eventQueue.poll();
final String eventType = event.get("type").getAsString();
JsonObject userAndEvent = this.eventQueue.poll();
final JsonObject event = userAndEvent.get("event").getAsJsonObject();
final String eventType = event.get("type").getAsString();
log.info(eventType);
@ -291,7 +292,8 @@ public class OpenViduEventManager {
String[] events = rawEvents.replaceFirst("^<br>", "").split("<br>");
for (String e : events) {
JsonObject event = JsonParser.parseString(e).getAsJsonObject();
JsonObject userAndEvent = JsonParser.parseString(e).getAsJsonObject();
final JsonObject event = userAndEvent.get("event").getAsJsonObject();
final String eventType = event.get("type").getAsString();
this.eventQueue.add(event);

View File

@ -24,6 +24,7 @@ import org.apache.commons.io.FileUtils;
import org.apache.http.HttpStatus;
import org.junit.Assert;
import org.junit.jupiter.api.AfterEach;
import org.openqa.selenium.By;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
@ -686,4 +687,19 @@ public class OpenViduTestE2e {
}
}
protected void waitUntilUserHasEventsPresent(BrowserUser user, int numberOfUser, String eventType,
int numberOfEvents) {
user.getWaiter().until(d -> {
List<WebElement> elements = d.findElements(By.cssSelector("#openvidu-instance-" + numberOfUser
+ " .mat-expansion-panel .mat-expansion-panel-header .mat-content"));
long numberOfEventsOfRequiredType = elements.stream().filter(e -> eventType.equals(e.getText().trim()))
.count();
if (numberOfEvents == numberOfEventsOfRequiredType) {
return true;
} else {
return null;
}
});
}
}

View File

@ -298,7 +298,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
updateEventList(eventName: string, eventContent: string, event: Event) {
const eventInterface: OpenViduEvent = { eventName, eventContent, event };
this.events.push(eventInterface);
this.testFeedService.pushNewEvent(event);
this.testFeedService.pushNewEvent({user: this.index, event});
}
toggleSubscribeTo(): void {
@ -523,7 +523,16 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
}
if (this.sessionEvents.speechToTextMessage) {
this.session.on('speechToTextMessage', (event: SpeechToTextEvent) => {
this.updateEventList('speechToTextMessage', event.connection.connectionId, event);
const displayedContent = {
connection: event.connection.connectionId,
text: event.text,
reason: event.reason,
lang: event.lang
}
this.updateEventList('speechToTextMessage', JSON.stringify(displayedContent), event);
if (event.reason === 'recognized') {
console.warn(event);
}
});
}
}

View File

@ -108,7 +108,7 @@ export class TestScenariosComponent implements OnInit, OnDestroy {
this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe(
newEvent => {
(window as any).myEvents += ('<br>' + JSON.stringify(newEvent));
(window as any).myEvents += ('<br>' + this.testFeedService.stringifyEventNoCircularDependencies(newEvent));
});
}
@ -409,7 +409,7 @@ export class TestScenariosComponent implements OnInit, OnDestroy {
};
report.serverEvents = streamInRemoteInfo.events;
for (const ev of report.serverEvents) {
ev.timestamp = Number(ev.timestamp) - report.startTime;
ev.timestamp = Number(ev.timestamp) - report.startTime;
}
});

View File

@ -4,8 +4,6 @@ import { OpenviduParamsService } from '../../services/openvidu-params.service';
import { TestFeedService } from '../../services/test-feed.service';
import { SessionConf } from '../openvidu-instance/openvidu-instance.component';
var stringify = require('json-stringify-safe');
@Component({
selector: 'app-test-sessions',
templateUrl: './test-sessions.component.html',
@ -41,7 +39,7 @@ export class TestSessionsComponent implements OnInit, OnDestroy {
this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe(
newEvent => {
(window as any).myEvents += ('<br>' + this.stringifyEventNoCircularDependencies(newEvent));
(window as any).myEvents += ('<br>' + this.testFeedService.stringifyEventNoCircularDependencies(newEvent));
});
}
@ -103,15 +101,4 @@ export class TestSessionsComponent implements OnInit, OnDestroy {
this.loadSubs(subs);
}
stringifyEventNoCircularDependencies(event: Event): string {
return stringify(event, (key, value) => {
// Remove unnecessary properties
if (key == 'ee' || key == 'openvidu' || key == 'userHandlerArrowHandler' || key == 'handlers') {
return
} else {
return value;
}
});
}
}

View File

@ -3,10 +3,12 @@ import { Subject } from 'rxjs';
import { Event } from 'openvidu-browser';
var stringify = require('json-stringify-safe');
@Injectable()
export class TestFeedService {
lastEvent: Event;
lastEvent: { user: number, event: Event };
newLastEvent$ = new Subject<any>();
constructor() { }
@ -15,9 +17,20 @@ export class TestFeedService {
return this.lastEvent;
}
pushNewEvent(event: Event) {
this.lastEvent = event;
pushNewEvent({ user: number, event: Event }) {
this.lastEvent = { user: number, event: Event };
this.newLastEvent$.next(this.lastEvent);
}
stringifyEventNoCircularDependencies(event: Event): string {
return stringify(event, (key, value) => {
// Remove unnecessary properties
if (key == 'ee' || key == 'openvidu' || key == 'userHandlerArrowHandler' || key == 'handlers') {
return
} else {
return value;
}
});
}
}