You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ko...@apache.org on 2013/11/09 09:07:35 UTC

[1/2] git commit: updated refs/heads/master to b33a837

Updated Branches:
  refs/heads/master ded8d6592 -> b33a8371b


fix long cast to double

- the result of dividing long with long resulted in loss of precision both for network and IO
- unit tests included

Signed-off-by: Laszlo Hornyak <la...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b2f06aae
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b2f06aae
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b2f06aae

Branch: refs/heads/master
Commit: b2f06aae68b0da523fe274c78222abe809af92a7
Parents: ded8d65
Author: Laszlo Hornyak <la...@gmail.com>
Authored: Fri Nov 8 23:15:19 2013 +0100
Committer: Laszlo Hornyak <la...@gmail.com>
Committed: Sat Nov 9 09:04:05 2013 +0100

----------------------------------------------------------------------
 .../kvm/resource/LibvirtComputingResource.java  |  10 +-
 .../resource/LibvirtComputingResourceTest.java  | 109 +++++++++++++++++--
 2 files changed, 105 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b2f06aae/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 63bd5dc..eda311f 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -4776,7 +4776,7 @@ ServerResource {
         Calendar _timestamp;
     }
 
-    private VmStatsEntry getVmStat(Connect conn, String vmName)
+    VmStatsEntry getVmStat(Connect conn, String vmName)
             throws LibvirtException {
         Domain dm = null;
         try {
@@ -4821,10 +4821,10 @@ ServerResource {
             }
 
             if (oldStats != null) {
-                long deltarx = rx - oldStats._rx;
+                double deltarx = rx - oldStats._rx;
                 if (deltarx > 0)
                     stats.setNetworkReadKBs(deltarx / 1024);
-                long deltatx = tx - oldStats._tx;
+                double deltatx = tx - oldStats._tx;
                 if (deltatx > 0)
                     stats.setNetworkWriteKBs(deltatx / 1024);
             }
@@ -4850,10 +4850,10 @@ ServerResource {
                 long deltaiowr = io_wr - oldStats._io_wr;
                 if (deltaiowr > 0)
                     stats.setDiskWriteIOs(deltaiowr);
-                long deltabytesrd = bytes_rd - oldStats._bytes_rd;
+                double deltabytesrd = bytes_rd - oldStats._bytes_rd;
                 if (deltabytesrd > 0)
                     stats.setDiskReadKBs(deltabytesrd / 1024);
-                long deltabyteswr = bytes_wr - oldStats._bytes_wr;
+                double deltabyteswr = bytes_wr - oldStats._bytes_wr;
                 if (deltabyteswr > 0)
                     stats.setDiskWriteKBs(deltabyteswr / 1024);
             }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b2f06aae/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
index d6e8dc2..803ac32 100644
--- a/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
+++ b/plugins/hypervisors/kvm/test/com/cloud/hypervisor/kvm/resource/LibvirtComputingResourceTest.java
@@ -19,21 +19,37 @@
 
 package com.cloud.hypervisor.kvm.resource;
 
-import com.cloud.agent.api.to.VirtualMachineTO;
-import com.cloud.template.VirtualMachineTemplate.BootloaderType;
-import com.cloud.utils.Pair;
-import com.cloud.vm.VirtualMachine;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Random;
+import java.util.UUID;
 
 import junit.framework.Assert;
+
 import org.apache.commons.lang.SystemUtils;
 import org.junit.Assume;
 import org.junit.Test;
+import org.libvirt.Connect;
+import org.libvirt.Domain;
+import org.libvirt.DomainBlockStats;
+import org.libvirt.DomainInfo;
+import org.libvirt.DomainInterfaceStats;
+import org.libvirt.LibvirtException;
+import org.libvirt.NodeInfo;
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
 
-import java.util.Random;
-import java.util.UUID;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import com.cloud.agent.api.VmStatsEntry;
+import com.cloud.agent.api.to.VirtualMachineTO;
+import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.DiskDef;
+import com.cloud.hypervisor.kvm.resource.LibvirtVMDef.InterfaceDef;
+import com.cloud.template.VirtualMachineTemplate.BootloaderType;
+import com.cloud.utils.Pair;
+import com.cloud.vm.VirtualMachine;
 
 public class LibvirtComputingResourceTest {
 
@@ -210,4 +226,79 @@ public class LibvirtComputingResourceTest {
         uuid = lcr.getUuid(uuid);
         Assert.assertTrue(uuid.equals(oldUuid));
     }
+    
+    private static final String VMNAME = "test";
+    
+    @Test
+    public void testGetVmStat() throws LibvirtException {
+        Connect connect = Mockito.mock(Connect.class);
+        Domain domain = Mockito.mock(Domain.class);
+        DomainInfo domainInfo = new DomainInfo();
+        Mockito.when(domain.getInfo()).thenReturn(domainInfo);
+        Mockito.when(connect.domainLookupByName(VMNAME)).thenReturn(domain);
+        NodeInfo nodeInfo = new NodeInfo();
+        nodeInfo.cpus = 8;
+        nodeInfo.memory = 8 * 1024 * 1024;
+        nodeInfo.sockets = 2;
+        nodeInfo.threads = 2;
+        nodeInfo.model = "Foo processor";
+        Mockito.when(connect.nodeInfo()).thenReturn(nodeInfo);
+        // this is testing the interface stats, returns an increasing number of sent and received bytes
+        Mockito.when(domain.interfaceStats(Mockito.anyString())).thenAnswer(new Answer<DomainInterfaceStats>() {
+            // increment with less than a KB, so this should be less than 1 KB
+            final static int increment = 1000;
+            int rx_bytes = 1000;
+            int tx_bytes = 1000;
+
+            @Override
+            public DomainInterfaceStats answer(InvocationOnMock invocation) throws Throwable {
+                DomainInterfaceStats domainInterfaceStats = new DomainInterfaceStats();
+                domainInterfaceStats.rx_bytes = (this.rx_bytes += increment);
+                domainInterfaceStats.tx_bytes = (this.tx_bytes += increment);
+                return domainInterfaceStats;
+
+            }
+
+        });
+
+        Mockito.when(domain.blockStats(Mockito.anyString())).thenAnswer(new Answer<DomainBlockStats>() {
+            // a little less than a KB
+            final static int increment = 1000;
+
+            int rd_bytes = 0;
+            int wr_bytes = 1024;
+            @Override
+            public DomainBlockStats answer(InvocationOnMock invocation) throws Throwable {
+                DomainBlockStats domainBlockStats = new DomainBlockStats();
+
+                domainBlockStats.rd_bytes = (rd_bytes += increment);
+                domainBlockStats.wr_bytes = (wr_bytes += increment);
+                return domainBlockStats;
+            }
+
+        });
+
+        LibvirtComputingResource libvirtComputingResource = new LibvirtComputingResource() {
+            @Override
+            protected List<InterfaceDef> getInterfaces(Connect conn, String vmName) {
+                InterfaceDef interfaceDef = new InterfaceDef();
+                return Arrays.asList(interfaceDef);
+            }
+    
+            @Override
+            public List<DiskDef> getDisks(Connect conn, String vmName) {
+                DiskDef diskDef = new DiskDef();
+                return Arrays.asList(diskDef);
+            }
+
+        };
+        libvirtComputingResource.getVmStat(connect, VMNAME);
+        VmStatsEntry vmStat = libvirtComputingResource.getVmStat(connect, VMNAME);
+        // network traffic as generated by the logic above, must be greater than zero
+        Assert.assertTrue(vmStat.getNetworkReadKBs() > 0);
+        Assert.assertTrue(vmStat.getNetworkWriteKBs() > 0);
+        // IO traffic as generated by the logic above, must be greater than zero
+        Assert.assertTrue(vmStat.getDiskReadKBs() > 0);
+        Assert.assertTrue(vmStat.getDiskWriteKBs() > 0);
+    }
 }


[2/2] git commit: updated refs/heads/master to b33a837

Posted by ko...@apache.org.
license headers added

Signed-off-by: Laszlo Hornyak <la...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b33a8371
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b33a8371
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b33a8371

Branch: refs/heads/master
Commit: b33a8371bc5cce4c64b30c0eeffe8dff751be85b
Parents: b2f06aa
Author: Laszlo Hornyak <la...@gmail.com>
Authored: Sat Nov 9 09:06:01 2013 +0100
Committer: Laszlo Hornyak <la...@gmail.com>
Committed: Sat Nov 9 09:06:01 2013 +0100

----------------------------------------------------------------------
 api/src/com/cloud/network/lb/SslCert.java           | 16 ++++++++++++++++
 .../src/com/cloud/network/dao/SslCertDaoImpl.java   | 16 ++++++++++++++++
 2 files changed, 32 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b33a8371/api/src/com/cloud/network/lb/SslCert.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/network/lb/SslCert.java b/api/src/com/cloud/network/lb/SslCert.java
index f7a7c4b..56555b6 100644
--- a/api/src/com/cloud/network/lb/SslCert.java
+++ b/api/src/com/cloud/network/lb/SslCert.java
@@ -1,3 +1,19 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 package com.cloud.network.lb;
 
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b33a8371/engine/schema/src/com/cloud/network/dao/SslCertDaoImpl.java
----------------------------------------------------------------------
diff --git a/engine/schema/src/com/cloud/network/dao/SslCertDaoImpl.java b/engine/schema/src/com/cloud/network/dao/SslCertDaoImpl.java
index 483c28d..af0d970 100644
--- a/engine/schema/src/com/cloud/network/dao/SslCertDaoImpl.java
+++ b/engine/schema/src/com/cloud/network/dao/SslCertDaoImpl.java
@@ -1,3 +1,19 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
 package com.cloud.network.dao;
 
 import com.cloud.utils.db.GenericDaoBase;