Updated Branches:
  refs/heads/vmsync ba9a9480b -> a8a09ba28

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/server/test/com/cloud/async/TestAsyncJobManager.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/async/TestAsyncJobManager.java 
b/server/test/com/cloud/async/TestAsyncJobManager.java
index 3a58cc7..1b78557 100644
--- a/server/test/com/cloud/async/TestAsyncJobManager.java
+++ b/server/test/com/cloud/async/TestAsyncJobManager.java
@@ -16,13 +16,18 @@
 // under the License.
 package com.cloud.async;
 
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.List;
+
 import javax.inject.Inject;
 import junit.framework.TestCase;
 
 import org.apache.cloudstack.framework.messagebus.MessageBus;
 import org.apache.cloudstack.framework.messagebus.PublishScope;
-import org.apache.cloudstack.messagebus.SubjectConstants;
+import org.apache.cloudstack.messagebus.TopicConstants;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -30,8 +35,10 @@ import org.mockito.Mockito;
 import org.springframework.test.context.ContextConfiguration;
 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
+import com.cloud.async.AsyncJobJournalVO;
 import com.cloud.async.AsyncJobManager;
 import com.cloud.async.AsyncJobMonitor;
+import com.cloud.async.dao.AsyncJobJournalDao;
 import com.cloud.cluster.ClusterManager;
 import com.cloud.utils.Predicate;
 import com.cloud.utils.component.ComponentContext;
@@ -45,19 +52,63 @@ public class TestAsyncJobManager extends TestCase {
     @Inject ClusterManager clusterMgr;
     @Inject MessageBus messageBus;
     @Inject AsyncJobMonitor jobMonitor;
+    @Inject AsyncJobJournalDao journalDao;
     
     @Before                                                  
     public void setUp() {
        ComponentContext.initComponentsLifeCycle();
        Mockito.when(clusterMgr.getManagementNodeId()).thenReturn(1L);
        
-       Transaction.open("dummy");                           
+       Transaction.open("dummy");
+       
+               // drop constraint check in order to do single table test
+               Statement stat = null;
+               try {
+                       stat = 
Transaction.currentTxn().getConnection().createStatement();
+                       stat.execute("SET foreign_key_checks = 0;");
+               } catch (SQLException e) {
+               } finally {
+                       if(stat != null) {
+                               try {
+                                       stat.close();
+                               } catch (SQLException e) {
+                               }
+                       }
+               }
     }                                                        
                                                              
     @After                                                   
     public void tearDown() {                                 
        Transaction.currentTxn().close();                    
-    }                                                        
+    }        
+    
+    @Test
+    public void testJobJournal() {
+       AsyncJobJournalVO journal = new AsyncJobJournalVO();
+       journal.setJobId(1L);
+       journal.setJournalType(AsyncJob.JournalType.SUCCESS);
+       journal.setJournalText("Journal record 1");
+       
+       journalDao.persist(journal);
+       
+       AsyncJobJournalVO journal2 = new AsyncJobJournalVO();
+       journal2.setJobId(1L);
+       journal2.setJournalType(AsyncJob.JournalType.SUCCESS);
+       journal2.setJournalText("Journal record 2");
+       
+       journalDao.persist(journal2);
+       
+       List<AsyncJobJournalVO> l = journalDao.getJobJournal(1L);
+       Assert.assertTrue(l.size() == 2);
+       journal = l.get(0);
+       Assert.assertTrue(journal.getJournalText().equals("Journal record 1"));
+       
+       journal2 = l.get(1);
+       Assert.assertTrue(journal2.getJournalText().equals("Journal record 2"));
+       
+       journalDao.expunge(journal.getId());
+       journalDao.expunge(journal2.getId());
+    }
     
     @Test
     public void testWaitAndCheck() {
@@ -81,7 +132,7 @@ public class TestAsyncJobManager extends TestCase {
        asyncMgr.waitAndCheck(new String[] {"VM"}, 5000L, 10000L, new 
Predicate() {
                public boolean checkCondition() {
                        System.out.println("Check condition to exit");
-                       messageBus.publish(null, 
SubjectConstants.JOB_HEARTBEAT, PublishScope.LOCAL, 1L);
+                       messageBus.publish(null, TopicConstants.JOB_HEARTBEAT, 
PublishScope.LOCAL, 1L);
                        return false;
                }
        });

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/server/test/com/cloud/vm/MockUserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/MockUserVmManagerImpl.java 
b/server/test/com/cloud/vm/MockUserVmManagerImpl.java
index dd8dd83..6e388c4 100644
--- a/server/test/com/cloud/vm/MockUserVmManagerImpl.java
+++ b/server/test/com/cloud/vm/MockUserVmManagerImpl.java
@@ -422,4 +422,12 @@ public class MockUserVmManagerImpl extends ManagerBase 
implements UserVmManager,
         // TODO Auto-generated method stub
         return null;
     }
+    
+    @Override
+    public void vmWorkStart(VmWork work) {
+    }
+    
+    @Override
+    public void vmWorkStop(VmWork work) {
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java 
b/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java
index 4f882d0..8e97788 100644
--- a/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java
+++ b/server/test/com/cloud/vm/VirtualMachineManagerImplTest.java
@@ -116,7 +116,9 @@ public class VirtualMachineManagerImplTest {
             _vmMgr._capacityMgr = _capacityMgr;
             _vmMgr._hostDao = _hostDao;
             _vmMgr._nodeId = 1L;
+/*            
             _vmMgr._workDao = _workDao;
+*/  
             _vmMgr._agentMgr = _agentMgr;
 
             when(_vmMock.getId()).thenReturn(314l);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java 
b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
index 4216aff..5cef9c2 100644
--- a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
+++ b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
@@ -30,6 +30,8 @@ import 
org.apache.cloudstack.framework.messagebus.PublishScope;
 
 import com.cloud.agent.api.to.NicTO;
 import com.cloud.agent.api.to.VirtualMachineTO;
+import com.cloud.async.AsyncJob.JournalType;
+import com.cloud.async.AsyncJobExecutionContext;
 import com.cloud.deploy.DeployDestination;
 import com.cloud.deploy.DeploymentPlan;
 import com.cloud.exception.AgentUnavailableException;
@@ -190,6 +192,11 @@ public class VmWorkMockVirtualMachineManagerImpl 
implements VirtualMachineManage
                // TODO Auto-generated method stub
                return null;
        }
+       
+    public <T extends VMInstanceVO> VirtualMachineGuru<T> getVmGuru(T vm) {
+               // TODO Auto-generated method stub
+       return null;
+    }
 
        @Override
        public boolean stateTransitTo(VMInstanceVO vm, Event e, Long hostId)
@@ -383,8 +390,10 @@ public class VmWorkMockVirtualMachineManagerImpl 
implements VirtualMachineManage
                return null;
        }
 
-       public Void doVmWorkStart(VmWork work) {
-               _msgBus.publish(null, "Done", PublishScope.GLOBAL, null);
-               return null;
-       }
+       @Override
+    public <T extends VMInstanceVO> T processVmStartWork(T vm, 
Map<VirtualMachineProfile.Param, Object> params, User caller, Account account, 
DeploymentPlan planToDeploy)
+            throws InsufficientCapacityException, 
ConcurrentOperationException, ResourceUnavailableException {
+       
+       return vm;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/server/test/com/cloud/vm/VmWorkTest.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkTest.java 
b/server/test/com/cloud/vm/VmWorkTest.java
index 2c76fe6..75ba612 100644
--- a/server/test/com/cloud/vm/VmWorkTest.java
+++ b/server/test/com/cloud/vm/VmWorkTest.java
@@ -40,6 +40,9 @@ import com.cloud.cluster.ClusterManager;
 import com.cloud.deploy.DataCenterDeployment;
 import com.cloud.deploy.DeploymentPlan;
 import com.cloud.deploy.DeploymentPlanner.ExcludeList;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.InsufficientStorageCapacityException;
+import com.cloud.serializer.SerializerHelper;
 import com.cloud.utils.LogUtils;
 import com.cloud.utils.Predicate;
 import com.cloud.utils.component.ComponentContext;
@@ -137,4 +140,16 @@ public class VmWorkTest extends TestCase {
                        }
                });
        }
+       
+       @Test
+       public void testExceptionSerialization() {
+               InsufficientCapacityException exception = new 
InsufficientStorageCapacityException("foo", VmWorkJobVO.class, 1L);
+               
+               String encodedString = 
SerializerHelper.toObjectSerializedString(exception);
+               System.out.println(encodedString);
+
+               exception = 
(InsufficientCapacityException)SerializerHelper.fromObjectSerializedString(encodedString);
+               Assert.assertTrue(exception.getScope() == VmWorkJobVO.class);
+               Assert.assertTrue(exception.getMessage().equals("foo"));
+       }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/server/test/com/cloud/vm/VmWorkTestConfiguration.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkTestConfiguration.java 
b/server/test/com/cloud/vm/VmWorkTestConfiguration.java
index f56e7be..2496dbe 100644
--- a/server/test/com/cloud/vm/VmWorkTestConfiguration.java
+++ b/server/test/com/cloud/vm/VmWorkTestConfiguration.java
@@ -25,6 +25,8 @@ import com.cloud.async.SyncQueueManager;
 import com.cloud.async.SyncQueueManagerImpl;
 import com.cloud.async.dao.AsyncJobDao;
 import com.cloud.async.dao.AsyncJobDaoImpl;
+import com.cloud.async.dao.AsyncJobJournalDao;
+import com.cloud.async.dao.AsyncJobJournalDaoImpl;
 import com.cloud.async.dao.SyncQueueDao;
 import com.cloud.async.dao.SyncQueueDaoImpl;
 import com.cloud.async.dao.SyncQueueItemDao;
@@ -103,4 +105,9 @@ public class VmWorkTestConfiguration {
        public VmWorkJobDao vmworkJobDao() {
                return new VmWorkJobDaoImpl();
        }
+       
+       @Bean
+       public AsyncJobJournalDao jobJournalDao() {
+               return new AsyncJobJournalDaoImpl();
+       }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a09ba2/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------
diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql
index b0daaf5..c615c4f 100644
--- a/setup/db/db/schema-410to420.sql
+++ b/setup/db/db/schema-410to420.sql
@@ -411,7 +411,6 @@ ALTER TABLE `cloud`.`async_job` DROP COLUMN 
`job_cmd_originator`;
 ALTER TABLE `cloud`.`async_job` DROP COLUMN `callback_type`;
 ALTER TABLE `cloud`.`async_job` DROP COLUMN `callback_address`;
 
-ALTER TABLE `cloud`.`async_job` ADD COLUMN `parent_id` bigint;
 ALTER TABLE `cloud`.`async_job` ADD COLUMN `job_type` VARCHAR(32);
 ALTER TABLE `cloud`.`async_job` ADD COLUMN `job_dispatcher` VARCHAR(64);
 ALTER TABLE `cloud`.`async_job` ADD COLUMN `job_executing_msid` bigint;
@@ -433,3 +432,13 @@ CREATE TABLE `cloud`.`vm_work_job` (
   INDEX `i_vm_work_job__step`(`step`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+CREATE TABLE `cloud`.`async_job_journal` (
+  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
+  `job_id` bigint unsigned NOT NULL,
+  `journal_type` varchar(32),
+  `journal_text` varchar(1024) COMMENT 'journal descriptive informaton',
+  `journal_obj` varchar(1024) COMMENT 'journal strutural information, JSON 
encoded object',
+  `created` datetime NOT NULL COMMENT 'date created',
+  PRIMARY KEY (`id`),
+  CONSTRAINT `fk_async_job_journal__job_id` FOREIGN KEY (`job_id`) REFERENCES 
`async_job`(`id`) ON DELETE CASCADE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Reply via email to