< prev index next >

application/uitests/org.openjdk.jmc.flightrecorder.uitest/src/test/java/org/openjdk/jmc/flightrecorder/uitest/JfrThreadsPageTest.java

Print this page




  24  *
  25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
  26  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  27  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  28  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  30  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
  32  * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33  */
  34 package org.openjdk.jmc.flightrecorder.uitest;
  35 
  36 import org.junit.Assert;
  37 import org.junit.Rule;
  38 import org.junit.Test;
  39 import org.openjdk.jmc.test.jemmy.MCJemmyTestBase;
  40 import org.openjdk.jmc.test.jemmy.MCUITestRule;
  41 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCChartCanvas;
  42 import org.openjdk.jmc.test.jemmy.misc.wrappers.JfrNavigator;
  43 import org.openjdk.jmc.test.jemmy.misc.wrappers.JfrUi;

  44 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCMenu;
  45 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCTable;



  46 
  47 public class JfrThreadsPageTest extends MCJemmyTestBase {
  48 
  49         private static final String PLAIN_JFR = "plain_recording.jfr";
  50         private static final String TABLE_COLUMN_HEADER = "Thread";






  51         private static final String HIDE_THREAD = org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.ThreadsPage_HIDE_THREAD_ACTION;
  52         private static final String RESET_CHART = org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.ThreadsPage_RESET_CHART_TO_SELECTION_ACTION;


  53 
  54         private static MCChartCanvas chartCanvas;
  55         private static MCTable threadsTable;
  56 
  57         @Rule
  58         public MCUITestRule testRule = new MCUITestRule(verboseRuleOutput) {
  59                 @Override
  60                 public void before() {
  61                         JfrUi.openJfr(materialize("jfr", PLAIN_JFR, JfrThreadsPageTest.class));
  62                         JfrNavigator.selectTab(JfrUi.Tabs.THREADS);
  63                         threadsTable = MCTable.getByColumnHeader(TABLE_COLUMN_HEADER);
  64                         chartCanvas = MCChartCanvas.getChartCanvas();
  65                 }
  66 
  67                 @Override
  68                 public void after() {
  69                         MCMenu.closeActiveEditor();
  70                 }
  71         };
  72 
  73         @Test




























  74         public void testMenuItemEnablement() {

  75                 final int numThreads = threadsTable.getItemCount();


  76                 Assert.assertTrue(numThreads > 0);
  77 
  78                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
  79                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
  80 
  81                 chartCanvas.clickContextMenuItem(HIDE_THREAD);
  82 
  83                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
  84                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
  85 
  86                 chartCanvas.clickContextMenuItem(RESET_CHART);
  87 
  88                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
  89                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
  90         }
  91 
  92         @Test
  93         public void testHideAllThreads() {
  94                 final int numSelection = 7;


  95                 final int numThreads = threadsTable.getItemCount();


  96                 Assert.assertTrue(numThreads > 0 && numThreads >= numSelection);
  97                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
  98                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
  99 

 100                 // Select a limited number of threads in the chart using the table
 101                 threadsTable.selectItems(0, numSelection - 1);

 102 
 103                 // Hide all the threads from the chart
 104                 for (int i = 0; i < numSelection; i++) {
 105                         chartCanvas.clickContextMenuItem(HIDE_THREAD);
 106                 }
 107 
 108                 // Once all threads are hidden from the chart, the hide thread menu item will be disabled
 109                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 110                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 111 
 112                 chartCanvas.clickContextMenuItem(RESET_CHART);
 113 
 114                 // Verify the menu item isEnabled values are back to their default values
 115                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 116                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 117         }
 118 }
 119 







































  24  *
  25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
  26  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  27  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  28  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  29  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  30  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
  32  * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  33  */
  34 package org.openjdk.jmc.flightrecorder.uitest;
  35 
  36 import org.junit.Assert;
  37 import org.junit.Rule;
  38 import org.junit.Test;
  39 import org.openjdk.jmc.test.jemmy.MCJemmyTestBase;
  40 import org.openjdk.jmc.test.jemmy.MCUITestRule;
  41 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCChartCanvas;
  42 import org.openjdk.jmc.test.jemmy.misc.wrappers.JfrNavigator;
  43 import org.openjdk.jmc.test.jemmy.misc.wrappers.JfrUi;
  44 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCButton;
  45 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCMenu;
  46 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCTable;
  47 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCText;
  48 import org.openjdk.jmc.test.jemmy.misc.wrappers.MCToolBar;
  49 import org.openjdk.jmc.ui.UIPlugin;
  50 
  51 public class JfrThreadsPageTest extends MCJemmyTestBase {
  52 
  53         private static final String PLAIN_JFR = "plain_recording.jfr";
  54         private static final String TABLE_COLUMN_HEADER = "Thread";
  55         private static final String OK_BUTTON = "OK";
  56         private static final String RESET_BUTTON = "Reset";
  57         private static final String FILTER_BUTTON = "Filter";
  58         private static final String START_TIME = "08:06:19:489";
  59         private static final String NEW_START_TIME = "08:06:19:500";
  60         private static final String DEFAULT_ZOOM = "100.00 %";
  61         private static final String HIDE_THREAD = org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.ThreadsPage_HIDE_THREAD_ACTION;
  62         private static final String RESET_CHART = org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.ThreadsPage_RESET_CHART_TO_SELECTION_ACTION;
  63         private static final String TABLE_TOOLTIP = org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.ThreadsPage_VIEW_THREAD_DETAILS;
  64         private static final String TABLE_SHELL_TEXT = org.openjdk.jmc.flightrecorder.ui.messages.internal.Messages.ThreadsPage_TABLE_POPUP_TITLE;
  65 
  66         private static MCChartCanvas chartCanvas;
  67         private static MCTable threadsTable;
  68 
  69         @Rule
  70         public MCUITestRule testRule = new MCUITestRule(verboseRuleOutput) {
  71                 @Override
  72                 public void before() {
  73                         JfrUi.openJfr(materialize("jfr", PLAIN_JFR, JfrThreadsPageTest.class));
  74                         JfrNavigator.selectTab(JfrUi.Tabs.THREADS);

  75                         chartCanvas = MCChartCanvas.getChartCanvas();
  76                 }
  77 
  78                 @Override
  79                 public void after() {
  80                         MCMenu.closeActiveEditor();
  81                 }
  82         };
  83 
  84         @Test
  85         public void testResetButtons() {
  86                 MCText StartTimeField = MCText.getByText(START_TIME);
  87                 MCText zoomDisplay = MCText.getByText(DEFAULT_ZOOM);
  88                 MCButton filterBtn = MCButton.getByLabel(FILTER_BUTTON);
  89                 MCButton resetBtn = MCButton.getByLabel(RESET_BUTTON);
  90                 MCButton scaleToFitBtn = MCButton.getByImage(
  91                                 UIPlugin.getDefault().getImage(UIPlugin.ICON_FA_SCALE_TO_FIT));
  92 
  93                 StartTimeField.setText(NEW_START_TIME);
  94                 filterBtn.click();
  95                 Assert.assertNotEquals(START_TIME, StartTimeField.getText());
  96                 Assert.assertNotEquals(zoomDisplay.getText(), DEFAULT_ZOOM);
  97 
  98                 resetBtn.click();
  99                 Assert.assertEquals(START_TIME, StartTimeField.getText());
 100                 Assert.assertEquals(zoomDisplay.getText(), DEFAULT_ZOOM);
 101 
 102                 StartTimeField.setText(NEW_START_TIME);
 103                 filterBtn.click();
 104                 Assert.assertNotEquals(START_TIME, StartTimeField.getText());
 105                 Assert.assertNotEquals(zoomDisplay.getText(), DEFAULT_ZOOM);
 106 
 107                 scaleToFitBtn.click();
 108                 Assert.assertEquals(zoomDisplay.getText(), DEFAULT_ZOOM);
 109                 Assert.assertEquals(START_TIME, StartTimeField.getText());
 110         }
 111 
 112         @Test
 113         public void testMenuItemEnablement() {
 114                 openThreadsTable();
 115                 final int numThreads = threadsTable.getItemCount();
 116                 closeThreadsTable();
 117 
 118                 Assert.assertTrue(numThreads > 0);
 119 
 120                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 121                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 122 
 123                 chartCanvas.clickContextMenuItem(HIDE_THREAD);
 124 
 125                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 126                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 127 
 128                 chartCanvas.clickContextMenuItem(RESET_CHART);
 129 
 130                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 131                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 132         }
 133 
 134         @Test
 135         public void testHideAllThreads() {
 136                 final int numSelection = 7;
 137 
 138                 openThreadsTable();
 139                 final int numThreads = threadsTable.getItemCount();
 140                 closeThreadsTable();
 141 
 142                 Assert.assertTrue(numThreads > 0 && numThreads >= numSelection);
 143                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 144                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 145 
 146                 openThreadsTable();
 147                 // Select a limited number of threads in the chart using the table
 148                 threadsTable.selectItems(0, numSelection - 1);
 149                 closeThreadsTable();
 150 
 151                 // Hide all the threads from the chart
 152                 for (int i = 0; i < numSelection; i++) {
 153                         chartCanvas.clickContextMenuItem(HIDE_THREAD);
 154                 }
 155 
 156                 // Once all threads are hidden from the chart, the hide thread menu item will be disabled
 157                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 158                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 159 
 160                 chartCanvas.clickContextMenuItem(RESET_CHART);
 161 
 162                 // Verify the menu item isEnabled values are back to their default values
 163                 Assert.assertTrue(chartCanvas.isContextMenuItemEnabled(HIDE_THREAD));
 164                 Assert.assertFalse(chartCanvas.isContextMenuItemEnabled(RESET_CHART));
 165         }

 166 
 167         @Test
 168         public void testPopupTableSelection() {
 169                 openThreadsTable();
 170                 final int numSelection = 7;
 171                 final int numThreads = threadsTable.getItemCount();
 172                 Assert.assertTrue(numThreads > 0 && numThreads >= numSelection);
 173 
 174                 threadsTable.selectItems(0, numSelection - 1);
 175                 int originalSelection = threadsTable.getSelectionCount();
 176                 Assert.assertEquals(numSelection, originalSelection);
 177                 closeThreadsTable();
 178 
 179                 openThreadsTable();
 180                 int newSelection = threadsTable.getSelectionCount();
 181                 Assert.assertEquals(newSelection, originalSelection);
 182                 closeThreadsTable();
 183         }
 184 
 185         private void openThreadsTable() {
 186                 if (threadsTable == null) {
 187                         MCToolBar.focusMc();
 188                         MCToolBar tb = MCToolBar.getByToolTip(TABLE_TOOLTIP);
 189                         tb.clickToolItem(TABLE_TOOLTIP);
 190                         threadsTable = MCTable.getByColumnHeader(TABLE_SHELL_TEXT, TABLE_COLUMN_HEADER);
 191                 }
 192         }
 193 
 194         private void closeThreadsTable() {
 195                 if (threadsTable != null) {
 196                         MCButton okButton = MCButton.getByLabel(TABLE_SHELL_TEXT, OK_BUTTON);
 197                         okButton.click();
 198                         threadsTable = null;
 199                         MCToolBar.focusMc();
 200                 }
 201         }
 202 
 203 }
< prev index next >