diff options
Diffstat (limited to 'uitest/src/com/vaadin/tests/performance')
-rw-r--r-- | uitest/src/com/vaadin/tests/performance/BasicPerformanceTest.java | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/performance/BasicPerformanceTest.java b/uitest/src/com/vaadin/tests/performance/BasicPerformanceTest.java new file mode 100644 index 0000000000..b0047d6b62 --- /dev/null +++ b/uitest/src/com/vaadin/tests/performance/BasicPerformanceTest.java @@ -0,0 +1,182 @@ +package com.vaadin.tests.performance; + +import java.util.Iterator; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.util.TestUtils; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.Component; +import com.vaadin.ui.ComponentContainer; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Label; +import com.vaadin.ui.Panel; +import com.vaadin.ui.TextArea; +import com.vaadin.ui.UI; +import com.vaadin.ui.VerticalLayout; +import com.vaadin.ui.themes.Reindeer; + +public class BasicPerformanceTest extends UI { + + private final VerticalLayout contentLayout = new VerticalLayout(); + + private int clientLimit; + private int serverLimit; + private String performanceTopic; + private final Button reportPerformanceButton = new Button( + "Report some performance", new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + TestUtils.reportPerformance(performanceTopic, serverLimit, + clientLimit); + event.getButton().setEnabled(false); + } + }); + + @Override + public void init(VaadinRequest request) { + setContent(buildMainLayout()); + updatePerformanceReporting("first load", 100, 100); + } + + private void updatePerformanceReporting(String performanceTopic, + int serverLimit, int clientLimit) { + this.performanceTopic = performanceTopic; + this.serverLimit = serverLimit; + this.clientLimit = clientLimit; + reportPerformanceButton.setCaption("Report performance for " + + performanceTopic); + reportPerformanceButton.setEnabled(true); + } + + private ComponentContainer buildMainLayout() { + contentLayout.addComponent(new Label("Content lives here")); + + Panel contentScroller = new Panel(contentLayout); + contentScroller.setStyleName(Reindeer.PANEL_LIGHT); + contentScroller.setSizeFull(); + + TextArea performanceReportArea = new TextArea(); + performanceReportArea.setWidth("200px"); + TestUtils.installPerformanceReporting(performanceReportArea); + + VerticalLayout leftBar = new VerticalLayout(); + leftBar.setSizeUndefined(); + leftBar.addComponent(new Label("This is the left bar")); + leftBar.addComponent(performanceReportArea); + leftBar.addComponent(reportPerformanceButton); + + leftBar.addComponent(new Button("Set 20 panels as content", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + popupateContent(contentLayout, 20, true); + updatePerformanceReporting("20 panels", 100, 100); + } + })); + leftBar.addComponent(new Button("Set 40 panels as content", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + popupateContent(contentLayout, 40, true); + updatePerformanceReporting("40 panels", 100, 100); + } + })); + leftBar.addComponent(new Button("Set 40 layouts as content", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + popupateContent(contentLayout, 40, false); + updatePerformanceReporting("40 layouts", 100, 100); + } + })); + + leftBar.addComponent(new Button("Update all labels", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + Iterator<Component> componentIterator = contentLayout + .getComponentIterator(); + while (componentIterator.hasNext()) { + + Iterator<Component> columHolderIterator; + Component child = componentIterator.next(); + if (child instanceof Panel) { + columHolderIterator = ((ComponentContainer) ((Panel) child) + .getContent()).getComponentIterator(); + } else { + columHolderIterator = ((ComponentContainer) child) + .getComponentIterator(); + } + while (columHolderIterator.hasNext()) { + VerticalLayout column = (VerticalLayout) columHolderIterator + .next(); + Iterator<Component> columnIterator = column + .getComponentIterator(); + while (columnIterator.hasNext()) { + Label label = (Label) columnIterator.next(); + label.setValue("New value"); + } + } + } + updatePerformanceReporting("Update labels", 100, 100); + } + })); + + leftBar.addComponent(new Button("Clear content", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + contentLayout.removeAllComponents(); + contentLayout.addComponent(new Label("No content")); + updatePerformanceReporting("No content", 100, 100); + } + })); + + HorizontalLayout intermediateLayout = new HorizontalLayout(); + intermediateLayout.setSizeFull(); + intermediateLayout.addComponent(leftBar); + intermediateLayout.addComponent(contentScroller); + intermediateLayout.setExpandRatio(contentScroller, 1); + + VerticalLayout mainLayout = new VerticalLayout(); + mainLayout.setSizeFull(); + mainLayout.addComponent(new Label("This is a header")); + mainLayout.addComponent(intermediateLayout); + mainLayout.setExpandRatio(intermediateLayout, 1); + + return mainLayout; + } + + private void popupateContent(VerticalLayout contentLayout, int childCount, + boolean wrapInPanel) { + contentLayout.removeAllComponents(); + for (int i = 0; i < childCount; i++) { + VerticalLayout left = new VerticalLayout(); + left.addComponent(new Label("Label 1")); + left.addComponent(new Label("Label 2")); + left.addComponent(new Label("Label 3")); + + VerticalLayout right = new VerticalLayout(); + right.addComponent(new Label("Label 4")); + right.addComponent(new Label("Label 5")); + right.addComponent(new Label("Label 6")); + + HorizontalLayout columns = new HorizontalLayout(); + columns.addComponent(left); + columns.addComponent(right); + columns.setHeight(null); + columns.setWidth("100%"); + + if (wrapInPanel) { + Panel panel = new Panel("Data " + i, columns); + panel.setWidth("100%"); + panel.setHeight(null); + + contentLayout.addComponent(panel); + } else { + contentLayout.addComponent(columns); + } + } + } +} |