more reporting, esp on known errors to help debugging, and related web console 
fixes


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/commit/9a34e9ed
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/tree/9a34e9ed
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-ui/diff/9a34e9ed

Branch: refs/heads/0.4.0
Commit: 9a34e9ed40dba0afe2b44470ff2be49046a39179
Parents: fcbcce3
Author: Alex Heneveld <[email protected]>
Authored: Mon Sep 10 03:35:21 2012 +0100
Committer: Alex Heneveld <[email protected]>
Committed: Mon Sep 10 23:25:09 2012 -0700

----------------------------------------------------------------------
 .../brooklyn/web/console/EntityController.groovy       |  5 ++++-
 .../services/brooklyn/web/console/EntityService.groovy | 13 ++++++-------
 .../web/console/ManagementContextService.groovy        |  2 +-
 .../brooklyn/web/console/TestWebApplication.groovy     |  6 +++---
 .../brooklyn/web/console/entity/TaskSummary.groovy     |  6 +++---
 .../java/brooklyn/web/console/EntityServiceTest.groovy |  5 +++--
 6 files changed, 20 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9a34e9ed/usage/web-console/grails-app/controllers/brooklyn/web/console/EntityController.groovy
----------------------------------------------------------------------
diff --git 
a/usage/web-console/grails-app/controllers/brooklyn/web/console/EntityController.groovy
 
b/usage/web-console/grails-app/controllers/brooklyn/web/console/EntityController.groovy
index 5e4e72a..ca754c2 100644
--- 
a/usage/web-console/grails-app/controllers/brooklyn/web/console/EntityController.groovy
+++ 
b/usage/web-console/grails-app/controllers/brooklyn/web/console/EntityController.groovy
@@ -188,7 +188,10 @@ class EntityController {
         try {
             render entityService.getTasksOfEntity(params.id) as JSON
         } catch (NoSuchEntity e) {
-            render(status: 404, text: '{message: "Entity with specified id 
'+params.id+'does not exist"}')
+            render(status: 404, text: '{message: "Entity with specified id 
'+params.id+' does not exist"}')
+        } catch (StringIndexOutOfBoundsException e) {
+            println "ERROR returning 404, but tasks fyi are 
"+entityService.getTasksOfEntity(params.id);
+            render(status: 404, text: '{message: "Entity with specified id 
'+params.id+' caused error rendering as json"}')
         }
     }
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9a34e9ed/usage/web-console/grails-app/services/brooklyn/web/console/EntityService.groovy
----------------------------------------------------------------------
diff --git 
a/usage/web-console/grails-app/services/brooklyn/web/console/EntityService.groovy
 
b/usage/web-console/grails-app/services/brooklyn/web/console/EntityService.groovy
index 5500e98..086263c 100644
--- 
a/usage/web-console/grails-app/services/brooklyn/web/console/EntityService.groovy
+++ 
b/usage/web-console/grails-app/services/brooklyn/web/console/EntityService.groovy
@@ -36,27 +36,26 @@ public class EntityService {
     public static class NoSuchEntity extends Exception {}
 
     // TODO Want to handle pagination better; for now we just restrict list to 
20 most recent
-    /** returns only _effector_ calls */
+    /** returns only _effector_ calls, in submission order (reversed) */
     public List<TaskSummary> getTasksOfAllEntities() {
         final int MAX_NUM_RETURNED = 20
         
         List<TaskSummary> result = 
managementContextService.executionManager.getTasksWithAllTags(
                 [AbstractManagementContext.EFFECTOR_TAG]).collect { new 
TaskSummary(it) }
-                
         Collections.sort(result, {TaskSummary t1, TaskSummary t2 -> 
-                return new Long(t2.rawSubmitTimeUtc - 
t1.rawSubmitTimeUtc).intValue() } as Comparator)
+                return t2.rawSubmitTimeUtc.compareTo(t1.rawSubmitTimeUtc) } as 
Comparator)
         
         return result.subList(0, Math.min(MAX_NUM_RETURNED, result.size()))
     }
 
-    /** returns any active task or any invoked effector */
+    /** returns any active task or any invoked effector, in order of 
submission time, but with active tasks first */
     public Collection<TaskSummary> getTasksOfEntity(String entityId) {
         Entity e = getEntity(entityId)
         if (!e) throw new NoSuchEntity()
 
-        List taskSummaries = 
managementContextService.executionManager.getTasksWithAllTags([e]).collect { 
new TaskSummary(it) }
+        List taskSummaries = 
managementContextService.executionManager.getTasksWithTag(e).collect { new 
TaskSummary(it) }
         // only show active subtasks, and effectors
-        taskSummaries = taskSummaries.findAll { TaskSummary t -> 
t.endTimeUtc==-1 || t.isEffector };
+        taskSummaries = taskSummaries.findAll { TaskSummary t -> !t.endTimeUtc 
|| t.isEffector };
         Collections.sort(taskSummaries, 
             { TaskSummary t1, TaskSummary t2 ->
                 if (t1.endTimeUtc && !t2.endTimeUtc) {
@@ -68,7 +67,7 @@ public class EntityService {
                     return -1;
                 }
                 //otherwise sort by start time
-                return t2.rawSubmitTimeUtc - t1.rawSubmitTimeUtc;
+                return t2.rawSubmitTimeUtc.compareTo(t1.rawSubmitTimeUtc);
             } as Comparator);
         return taskSummaries;
     }

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9a34e9ed/usage/web-console/grails-app/services/brooklyn/web/console/ManagementContextService.groovy
----------------------------------------------------------------------
diff --git 
a/usage/web-console/grails-app/services/brooklyn/web/console/ManagementContextService.groovy
 
b/usage/web-console/grails-app/services/brooklyn/web/console/ManagementContextService.groovy
index bd1f2ca..1324433 100644
--- 
a/usage/web-console/grails-app/services/brooklyn/web/console/ManagementContextService.groovy
+++ 
b/usage/web-console/grails-app/services/brooklyn/web/console/ManagementContextService.groovy
@@ -32,7 +32,7 @@ class ManagementContextService {
         // TODO use a different mechanism for specifying test-app
         if (!managementContext) {
             managementContext = new LocalManagementContext();
-            managementContext.manage(new TestWebApplication())
+            managementContext.manage(new TestWebApplication(mgmt: 
managementContext))
         }
         // END TODO
 

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9a34e9ed/usage/web-console/grails-app/utils/brooklyn/web/console/TestWebApplication.groovy
----------------------------------------------------------------------
diff --git 
a/usage/web-console/grails-app/utils/brooklyn/web/console/TestWebApplication.groovy
 
b/usage/web-console/grails-app/utils/brooklyn/web/console/TestWebApplication.groovy
index 2850ee5..5968ee3 100644
--- 
a/usage/web-console/grails-app/utils/brooklyn/web/console/TestWebApplication.groovy
+++ 
b/usage/web-console/grails-app/utils/brooklyn/web/console/TestWebApplication.groovy
@@ -119,10 +119,10 @@ public class TestWebApplication extends 
AbstractApplication {
         Runnable r = new Runnable() {
             void run() {
                 while (true) {
-                    Sensor sensor = new BasicAttributeSensor(Sensor.class, 
"test.sensor", "Added and removed every 20s")
-                    entity.addSensor(sensor)
+                    Sensor sensor = new BasicAttributeSensor(String.class, 
"test.sensor", "Added and removed every 20s")
+                    entity.setAttribute(sensor, "X")
                     Thread.sleep(20*1000L)
-                    entity.removeSensor(sensor.name)
+                    entity.removeAttribute(sensor)
                     Thread.sleep(20*1000L)
                 }
             }

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9a34e9ed/usage/web-console/grails-app/utils/brooklyn/web/console/entity/TaskSummary.groovy
----------------------------------------------------------------------
diff --git 
a/usage/web-console/grails-app/utils/brooklyn/web/console/entity/TaskSummary.groovy
 
b/usage/web-console/grails-app/utils/brooklyn/web/console/entity/TaskSummary.groovy
index ade872a..836c693 100644
--- 
a/usage/web-console/grails-app/utils/brooklyn/web/console/entity/TaskSummary.groovy
+++ 
b/usage/web-console/grails-app/utils/brooklyn/web/console/entity/TaskSummary.groovy
@@ -19,7 +19,7 @@ public class TaskSummary {
     final String displayName;
     final String description;
     final String id;
-    final Set<String> tags;
+    final Collection<String> tags;
     final long rawSubmitTimeUtc;
     final String submitTimeUtc;
     final String startTimeUtc;
@@ -52,8 +52,8 @@ public class TaskSummary {
         this.currentStatus = task.statusSummary
         this.detailedStatus = task.getStatusDetail(true)
         
-        this.tags = tags;
-        this.isEffector = tags?.contains 
AbstractManagementContext.EFFECTOR_TAG;
+        this.tags = task.tags.collect { ""+it };
+        this.isEffector = 
task.tags?.contains(AbstractManagementContext.EFFECTOR_TAG);
     }
 
     public String toString() {

http://git-wip-us.apache.org/repos/asf/brooklyn-ui/blob/9a34e9ed/usage/web-console/src/test/java/brooklyn/web/console/EntityServiceTest.groovy
----------------------------------------------------------------------
diff --git 
a/usage/web-console/src/test/java/brooklyn/web/console/EntityServiceTest.groovy 
b/usage/web-console/src/test/java/brooklyn/web/console/EntityServiceTest.groovy
index d3567a7..db3e6f1 100644
--- 
a/usage/web-console/src/test/java/brooklyn/web/console/EntityServiceTest.groovy
+++ 
b/usage/web-console/src/test/java/brooklyn/web/console/EntityServiceTest.groovy
@@ -15,13 +15,13 @@ import brooklyn.entity.basic.AbstractGroup
 import brooklyn.entity.basic.MethodEffector
 import brooklyn.entity.trait.Startable
 import brooklyn.location.Location
-import brooklyn.location.basic.SimulatedLocation;
+import brooklyn.location.basic.SimulatedLocation
 import brooklyn.web.console.entity.TaskSummary
 
 import com.google.common.collect.Iterables
 
 class EntityServiceTest {
-    def testService
+    EntityService testService
 
     Entity testEntity
     List<Entity> testEntities
@@ -162,6 +162,7 @@ class EntityServiceTest {
         
         tier.invoke(eff)
         List<TaskSummary> tasks = testService.getTasksOfEntity(tier.id)
+        if (!tasks) fail("Should have had a task on "+tier.id+", since we 
invoked "+eff);
         TaskSummary task = tasks.get(0)
         
         assertEquals(task.entityDisplayName, tier.displayName)

Reply via email to