001 package org.hackystat.telemetry.analyzer.configuration; 002 003 import junit.framework.TestCase; 004 005 import org.hackystat.sensorbase.resource.users.jaxb.User; 006 007 /** 008 * Test suite for <code>PersistentTelemetryDefinitionManager</code>. 009 * 010 * @author (Cedric) Qin Zhang 011 */ 012 public class TestPersistentTelemetryDefinitionManager extends TestCase { 013 014 private User user = new User(); 015 private ShareScope privateShareScope = ShareScope.getPrivateShareScope(); 016 017 private String chartDefName = "persistent-CreatedbyUnitTest-ChartDefName"; 018 private String reportDefName = "persistent-CreatedbyUnitTest-ReportDefName"; 019 private String sameNameDefName = "persistent-CreatedbyUnitTest-SameNameDefName"; 020 021 /** 022 * Sets up the testcase. 023 * 024 */ 025 @Override 026 protected void setUp() { 027 this.user.setEmail("TelemetryDefinitions@hackystat.org"); 028 TelemetryDefinitionManager globalManager 029 = TelemetryDefinitionManagerFactory.getGlobalPersistentInstance(); 030 globalManager.remove(this.user, this.chartDefName, TelemetryDefinitionType.CHART); 031 globalManager.remove(this.user, this.reportDefName, TelemetryDefinitionType.REPORT); 032 033 globalManager.remove(this.user, this.sameNameDefName, TelemetryDefinitionType.CHART); 034 globalManager.remove(this.user, this.sameNameDefName, TelemetryDefinitionType.REPORT); 035 } 036 037 /** 038 * Tears down the testcase. 039 */ 040 @Override 041 protected void tearDown() { 042 this.setUp(); // just do the clean up one more time. 043 } 044 045 /** 046 * Test the global persistent instance. 047 * 048 * @throws Exception If test fails. 049 */ 050 public void testGlobalInstance() throws Exception { 051 TelemetryDefinitionManager manager 052 = TelemetryDefinitionManagerFactory.getGlobalPersistentInstance(); 053 054 // chart definition 055 TelemetryChartDefinitionInfo chartDefInfo = new TelemetryChartDefinitionInfo( 056 "chart " + this.chartDefName + "() = {\"title\", (StreamRef(), yAxis())};", 057 this.user, this.privateShareScope); 058 assertSame(null, manager.get(this.user, chartDefInfo.getName(), false, 059 TelemetryDefinitionType.CHART)); 060 int chartDefSize = manager.getAll(this.user, false, TelemetryDefinitionType.CHART).size(); 061 manager.add(chartDefInfo); 062 assertSame(chartDefInfo, manager.get(this.user, chartDefInfo.getName(), false, 063 TelemetryDefinitionType.CHART)); 064 assertEquals(chartDefSize + 1, manager.getAll(this.user, false, 065 TelemetryDefinitionType.CHART).size()); 066 manager.remove(this.user, chartDefInfo.getName(), TelemetryDefinitionType.CHART); 067 assertEquals(chartDefSize, manager.getAll(this.user, false, 068 TelemetryDefinitionType.CHART).size()); 069 070 // report defintion 071 TelemetryReportDefinitionInfo reportDefInfo = new TelemetryReportDefinitionInfo( 072 "report " + this.reportDefName + "() = {\"title\", ChartRef()};", 073 this.user, this.privateShareScope); 074 assertSame(null, manager.get(this.user, reportDefInfo.getName(), false, 075 TelemetryDefinitionType.REPORT)); 076 int reportDefSize = manager.getAll(this.user, false, TelemetryDefinitionType.REPORT).size(); 077 manager.add(reportDefInfo); 078 assertSame(reportDefInfo, manager.get(this.user, reportDefInfo.getName(), false, 079 TelemetryDefinitionType.REPORT)); 080 assertEquals(reportDefSize + 1, manager.getAll(this.user, false, 081 TelemetryDefinitionType.REPORT).size()); 082 manager.remove(this.user, reportDefInfo.getName(), TelemetryDefinitionType.REPORT); 083 assertEquals(reportDefSize, manager.getAll(this.user, false, 084 TelemetryDefinitionType.REPORT).size()); 085 086 // test single global namespace constraint 087 chartDefInfo = new TelemetryChartDefinitionInfo( 088 "chart " + this.sameNameDefName + "() = {\"title\", (StreamRef(), yAxis())};", 089 this.user, this.privateShareScope); 090 manager.add(chartDefInfo); 091 assertEquals(chartDefSize + 1, manager.getAll(this.user, false, 092 TelemetryDefinitionType.CHART).size()); 093 assertEquals(reportDefSize, manager.getAll(this.user, false, 094 TelemetryDefinitionType.REPORT).size()); 095 096 reportDefInfo = new TelemetryReportDefinitionInfo( 097 "report " + this.sameNameDefName + "() = {\"title\", ChartRef()};", 098 this.user, this.privateShareScope); 099 try { 100 manager.add(reportDefInfo); 101 fail("Global namespace constraint violation."); 102 } 103 catch (TelemetryConfigurationException ex) { //NOPMD 104 // expected 105 } 106 assertEquals(chartDefSize + 1, manager.getAll(this.user, false, 107 TelemetryDefinitionType.CHART).size()); 108 assertEquals(reportDefSize, manager.getAll(this.user, false, 109 TelemetryDefinitionType.REPORT).size()); 110 } 111 }