You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PerformanceObserverStats.spec.js 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import EventEmitter from 'events';
  2. import JitsiConference from '../../JitsiConference';
  3. import * as JitsiConferenceEvents from '../../JitsiConferenceEvents';
  4. import browser from '../browser';
  5. import Statistics from './statistics';
  6. /**
  7. * Mock object to be used in place of a real conference.
  8. *
  9. * @constructor
  10. */
  11. function MockConference() {
  12. this.eventEmitter = new EventEmitter();
  13. }
  14. MockConference.prototype = Object.create(JitsiConference.prototype);
  15. MockConference.prototype.constructor = JitsiConference;
  16. describe('PerformanceObserverStats', () => {
  17. beforeEach(() => {
  18. // works only on chrome.
  19. spyOn(browser, 'isChrome').and.returnValue(true);
  20. });
  21. it('Emits performance stats every sec', () => {
  22. const mockConference = new MockConference();
  23. const statistics = new Statistics();
  24. statistics.attachPerformanceStats(mockConference);
  25. const startObserverSpy = spyOn(statistics.performanceObserverStats, 'startObserver');
  26. const stopObserverSpy = spyOn(statistics.performanceObserverStats, 'stopObserver');
  27. const addNextSpy = spyOn(statistics.performanceObserverStats.stats, 'addNext');
  28. mockConference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
  29. expect(startObserverSpy).toHaveBeenCalled();
  30. expect(statistics.performanceObserverStats.getPerformanceStats()).toBeTruthy();
  31. setTimeout(() => {
  32. expect(addNextSpy).toHaveBeenCalled();
  33. }, 1000);
  34. mockConference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
  35. expect(stopObserverSpy).toHaveBeenCalled();
  36. });
  37. });