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 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import * as JitsiConferenceEvents from '../../JitsiConferenceEvents';
  2. import browser from '../browser';
  3. import Listenable from '../util/Listenable';
  4. import Statistics from './statistics';
  5. /**
  6. * Mock object to be used in place of a real conference.
  7. *
  8. */
  9. class MockConference extends Listenable {
  10. /**
  11. * constructor
  12. */
  13. constructor() {
  14. super();
  15. this.options = {
  16. config: {}
  17. };
  18. }
  19. }
  20. describe('PerformanceObserverStats', () => {
  21. let mockConference, statistics;
  22. beforeEach(() => {
  23. // works only on chrome.
  24. spyOn(browser, 'isChrome').and.returnValue(true);
  25. mockConference = new MockConference();
  26. Statistics.init({ longTasksStatsInterval: 1000 });
  27. statistics = new Statistics();
  28. jasmine.clock().install();
  29. });
  30. it('Conference events start/stop observer', () => {
  31. statistics.attachLongTasksStats(mockConference);
  32. const startObserverSpy = spyOn(statistics.performanceObserverStats, 'startObserver');
  33. const stopObserverSpy = spyOn(statistics.performanceObserverStats, 'stopObserver');
  34. mockConference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_JOINED);
  35. expect(startObserverSpy).toHaveBeenCalled();
  36. mockConference.eventEmitter.emit(JitsiConferenceEvents.CONFERENCE_LEFT);
  37. expect(stopObserverSpy).toHaveBeenCalled();
  38. });
  39. it('Emits long tasks stats every sec', () => {
  40. statistics.attachLongTasksStats(mockConference);
  41. statistics.performanceObserverStats.eventEmitter = {
  42. // eslint-disable-next-line no-empty-function
  43. emit: () => {}
  44. };
  45. statistics.performanceObserverStats.startObserver();
  46. const eventEmitSpy = spyOn(statistics.performanceObserverStats.eventEmitter, 'emit');
  47. expect(statistics.performanceObserverStats.getLongTasksStats()).toBeTruthy();
  48. expect(eventEmitSpy).not.toHaveBeenCalled();
  49. jasmine.clock().tick(1000);
  50. expect(eventEmitSpy).toHaveBeenCalled();
  51. });
  52. afterEach(() => {
  53. jasmine.clock().uninstall();
  54. });
  55. });