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>TelemetryDefInfoRepository</code>. 009 * 010 * TODO: find and findAll method with "true" not tested!!!! 011 * 012 * @author (Cedric) Qin Zhang 013 */ 014 public class TestTelemetryDefInfoRepository extends TestCase { 015 016 private User user = new User(); 017 private ShareScope privateShareScope = ShareScope.getPrivateShareScope(); 018 019 /** 020 * Tests all. 021 * 022 * @throws Exception If test fails. 023 */ 024 public void testAll() throws Exception { 025 this.user.setEmail("TelemetryDefinitions@hackystat.org"); 026 TelemetryChartDefinitionInfo a1 = new TelemetryChartDefinitionInfo( 027 "chart A() = {\"title\", (StreamRef1(), yAxis())};", this.user, this.privateShareScope); 028 TelemetryChartDefinitionInfo a2 = new TelemetryChartDefinitionInfo( 029 "chart A() = {\"title\", (StreamRef2(), yAxis())};", this.user, this.privateShareScope); 030 TelemetryChartDefinitionInfo b = new TelemetryChartDefinitionInfo( 031 "chart B() = {\"title\", (StreamRef3(), yAxis())};", this.user, this.privateShareScope); 032 033 TelemetryDefinitionInfoRepository repository = new TelemetryDefinitionInfoRepository(); 034 assertEquals(0, repository.findAll(this.user, false).size()); 035 assertNull(repository.find(this.user, "Ghost", false)); 036 assertEquals(false, repository.exists("A")); 037 assertEquals(false, repository.exists("B")); 038 039 repository.add(a1); 040 assertSame(a1, repository.find(this.user, "A", false)); 041 assertEquals(1, repository.findAll(this.user, false).size()); 042 assertEquals(true, repository.exists("A")); 043 assertEquals(false, repository.exists("B")); 044 045 try { 046 repository.add(a2); 047 fail("Should not allow adding defintion with the same name under same user."); 048 } 049 catch (TelemetryConfigurationException ex) { //NOPMD 050 // expected 051 } 052 assertSame(a1, repository.find(this.user, "A", false)); 053 assertEquals(1, repository.findAll(this.user, false).size()); 054 055 repository.add(b); 056 assertSame(b, repository.find(this.user, "B", false)); 057 assertEquals(2, repository.findAll(this.user, false).size()); 058 assertEquals(true, repository.exists("A")); 059 assertEquals(true, repository.exists("B")); 060 061 // do update by remove first and then add 062 repository.remove(this.user, "A"); 063 repository.add(a2); 064 assertSame(a2, repository.find(this.user, "A", false)); 065 assertEquals(2, repository.findAll(this.user, false).size()); 066 assertEquals(true, repository.exists("A")); 067 assertEquals(true, repository.exists("B")); 068 069 try { 070 repository.add(a1); 071 fail("Should not allow adding defintion with the same name under same user."); 072 } 073 catch (TelemetryConfigurationException ex) { //NOPMD 074 // expected 075 } 076 assertSame(a2, repository.find(this.user, "A", false)); 077 assertEquals(2, repository.findAll(this.user, false).size()); 078 079 repository.remove(this.user, "B"); 080 assertEquals(1, repository.findAll(this.user, false).size()); 081 assertNull(repository.find(this.user, "B", false)); 082 assertEquals(true, repository.exists("A")); 083 assertEquals(false, repository.exists("B")); 084 } 085 }