Package com.google.speedtracer.client.visualizations.view

Source Code of com.google.speedtracer.client.visualizations.view.EventFilterTests

/*
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.speedtracer.client.visualizations.view;

import com.google.gwt.junit.client.GWTTestCase;
import com.google.speedtracer.client.model.AggregateTimeVisitor;
import com.google.speedtracer.client.model.LayoutEvent;
import com.google.speedtracer.client.model.ParseHtmlEvent;
import com.google.speedtracer.client.model.UiEvent;

/**
* Tests for {@link EventFilter}.
*/
public class EventFilterTests extends GWTTestCase {

  @Override
  public String getModuleName() {
    return "com.google.speedtracer.Common";
  }

  public void testEventFilterDuration() {
    EventFilter filter = new EventFilter();

    filter.setMinDuration(10);
    UiEvent uiEvent = createUiEventDuration(LayoutEvent.TYPE, 1.0);
    assertTrue("1 ms event ", filter.shouldFilter(uiEvent));
    uiEvent = createUiEventDuration(LayoutEvent.TYPE, 9.0);
    assertTrue("1 ms event ", filter.shouldFilter(uiEvent));
    uiEvent = createUiEventDuration(LayoutEvent.TYPE, 100.0);
    assertFalse("100 ms event ", filter.shouldFilter(uiEvent));
    uiEvent = createUiEventDuration(LayoutEvent.TYPE, 10.0);
    assertFalse("10 ms event ", filter.shouldFilter(uiEvent));
  }

  public void testEventFilterType() {
    EventFilter filter = new EventFilter();

    filter.setEventType(LayoutEvent.TYPE);
    UiEvent uiEvent = createUiEventDuration(LayoutEvent.TYPE, 1.0);
    assertFalse("TYPE LayoutEvent filter", filter.shouldFilter(uiEvent));

    filter = new EventFilter();
    filter.setEventType(ParseHtmlEvent.TYPE);
    assertTrue("TYPE ParseHtmlEvent filter", filter.shouldFilter(uiEvent));
  }

  public void testEventFilterTypePercent() {
    EventFilter filter = new EventFilter();

    filter.setEventType(LayoutEvent.TYPE);
    filter.setMinEventTypePercent(.5);
    UiEvent uiEvent = createUiEventTypePercentDuration(LayoutEvent.TYPE, 10.0,
        ParseHtmlEvent.TYPE, 1.0);
    assertFalse("TYPE LayoutEvent filter", filter.shouldFilter(uiEvent));

    uiEvent = createUiEventTypePercentDuration(LayoutEvent.TYPE, 10.0,
        ParseHtmlEvent.TYPE, 9.0);
    assertTrue("TYPE LayoutEvent filter", filter.shouldFilter(uiEvent));

    filter.setEventType(ParseHtmlEvent.TYPE);
    filter.setMinEventTypePercent(.5);
    uiEvent = createUiEventTypePercentDuration(LayoutEvent.TYPE, 10.0,
        ParseHtmlEvent.TYPE, 9.0);
    assertFalse("TYPE ParseHtmlEvent filter", filter.shouldFilter(uiEvent));

    uiEvent = createUiEventTypePercentDuration(LayoutEvent.TYPE, 10.0,
        ParseHtmlEvent.TYPE, 1.0);
    assertTrue("TYPE ParseHtmlEvent filter", filter.shouldFilter(uiEvent));

    filter.setEventType(LayoutEvent.TYPE);
    filter.setMinEventTypePercent(.5);
    uiEvent = createUiEventTypePercentDuration(LayoutEvent.TYPE, 1.0,
        ParseHtmlEvent.TYPE, 1.0, LayoutEvent.TYPE, 8.0);
    assertFalse("TYPE LayoutEvent filter", filter.shouldFilter(uiEvent));

    uiEvent = createUiEventTypePercentDuration(LayoutEvent.TYPE, 10.0,
        ParseHtmlEvent.TYPE, 9.0, ParseHtmlEvent.TYPE, 1.0);
    assertTrue("TYPE LayoutEvent filter", filter.shouldFilter(uiEvent));
  }

  public void testEventHasHints() {
    EventFilter filter = new EventFilter();

    filter.setMinDuration(10);
    filter.setFilterHints(true);
    UiEvent uiEvent = createUiEventDuration(LayoutEvent.TYPE, 11.0);
    assertFalse("hintlets 1", filter.shouldFilter(uiEvent));
    setHasHints(uiEvent);
    assertFalse("hintlets 2", filter.shouldFilter(uiEvent));
    filter.setMinDuration(20);
    assertTrue("hintlets 3", filter.shouldFilter(uiEvent));
    filter.setFilterHints(false);
    assertFalse("hintlets 4", filter.shouldFilter(uiEvent));
  }

  public void testEventHasUserLogs() {
    EventFilter filter = new EventFilter();

    filter.setMinDuration(10);
    filter.setFilterUserLogs(true);
    UiEvent uiEvent = createUiEventDuration(LayoutEvent.TYPE, 11.0);
    assertFalse("user logs 1", filter.shouldFilter(uiEvent));
    setHasUserLogs(uiEvent);
    assertFalse("user logs 2", filter.shouldFilter(uiEvent));
    filter.setMinDuration(20);
    assertTrue("user logs 3", filter.shouldFilter(uiEvent));
    filter.setFilterUserLogs(false);
    assertFalse("user logs 4", filter.shouldFilter(uiEvent));
  }

  private void calcSelfTime(UiEvent uiEvent) {
    AggregateTimeVisitor.apply(uiEvent);
  }

  private UiEvent createUiEventDuration(int eventType, double duration) {
    UiEvent uiEvent = createUiEventDurationNative(eventType, duration);
    calcSelfTime(uiEvent);
    return uiEvent;
  }

  private native UiEvent createUiEventDurationNative(int eventType,
      double duration) /*-{
    return {
    'children':[],
    'data':{'creationTime':1240951618036.53,'windowEventType':'focus'},
    'duration':duration,'time':694.3199999928474,'type':eventType};
  }-*/;

  private UiEvent createUiEventTypePercentDuration(int outerType,
      double durationOuter, int childType, double durationChild) {
    UiEvent uiEvent = createUiEventTypePercentNative(outerType, durationOuter,
        childType, durationChild);
    calcSelfTime(uiEvent);
    return uiEvent;
  }

  private UiEvent createUiEventTypePercentDuration(int outerType,
      double durationOuter, int childType, double durationChild,
      int grandChildType, double durationGrandChild) {
    UiEvent uiEvent = createUiEventTypePercentNative(outerType, durationOuter,
        childType, durationChild, grandChildType, durationGrandChild);
    calcSelfTime(uiEvent);
    return uiEvent;
  }

  private native UiEvent createUiEventTypePercentNative(int outerType,
      double durationOuter, int childType, double durationChild) /*-{
    return { 'children':[{'time':694.319999,'duration':durationChild,'type':childType}],
    'data':{'creationTime':1240951618036.53,'windowEventType':'focus'},
    'duration':durationOuter,'time':694.3199999928474,'type':outerType};
  }-*/;

  private native UiEvent createUiEventTypePercentNative(int outerType,
      double durationOuter, int childType, double durationChild,
      int grandChildType, double durationGrandChild) /*-{
    return { 'children':[{'children':[{'time':694.319999,'duration':durationGrandChild,'type':grandChildType}],
    'time':694.319999,'duration':durationChild,'type':childType}],
    'data':{'creationTime':1240951618036.53,'windowEventType':'focus'},
    'duration':durationOuter,'time':694.3199999928474,'type':outerType};
  }-*/;

  private native UiEvent setHasHints(UiEvent uiEvent) /*-{
    uiEvent.hints = [{bogusHintlet:'bogusHintlet'}];
  }-*/;

  private native UiEvent setHasUserLogs(UiEvent uiEvent) /*-{
    uiEvent.hasUserLogs = true;
  }-*/;
TOP

Related Classes of com.google.speedtracer.client.visualizations.view.EventFilterTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.