Repository: mesos
Updated Branches:
  refs/heads/master 072638d25 -> 0a9bfe193


Fixed bugs in tests/mesos.hpp helpers.

Segfault may occur on two function with v1 scenario:
1. createPersistentVolume().
2. createDiskResource().
These are due to the use of common 'Resources::parse()'. This patch
fixes this issue by replacing with 'TResources::parse()'.

Review: https://reviews.apache.org/r/57184/


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

Branch: refs/heads/master
Commit: 09f5c3916c377bb64ca48c93a97dac685c034290
Parents: 072638d
Author: Gilbert Song <[email protected]>
Authored: Mon Mar 6 15:04:31 2017 -0800
Committer: Vinod Kone <[email protected]>
Committed: Mon Mar 6 15:04:31 2017 -0800

----------------------------------------------------------------------
 src/tests/mesos.hpp | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/09f5c391/src/tests/mesos.hpp
----------------------------------------------------------------------
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index b450a04..45a8087 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -810,7 +810,7 @@ inline typename TResource::DiskInfo::Source 
createDiskSourceMount(
 
 
 // Helper for creating a disk resource.
-template <typename TResource, typename TVolume>
+template <typename TResource, typename TResources, typename TVolume>
 inline TResource createDiskResource(
     const std::string& value,
     const std::string& role,
@@ -819,7 +819,7 @@ inline TResource createDiskResource(
     const Option<typename TResource::DiskInfo::Source>& source = None(),
     bool isShared = false)
 {
-  TResource resource = Resources::parse("disk", value, role).get();
+  TResource resource = TResources::parse("disk", value, role).get();
 
   if (persistenceID.isSome() || containerPath.isSome() || source.isSome()) {
     resource.mutable_disk()->CopyFrom(
@@ -841,7 +841,7 @@ inline TResource createDiskResource(
 
 // Note that `reservationPrincipal` should be specified if and only if
 // the volume uses dynamically reserved resources.
-template <typename TResource, typename TVolume>
+template <typename TResource, typename TResources, typename TVolume>
 inline TResource createPersistentVolume(
     const Bytes& size,
     const std::string& role,
@@ -852,7 +852,7 @@ inline TResource createPersistentVolume(
     const Option<std::string>& creatorPrincipal = None(),
     bool isShared = false)
 {
-  TResource volume = Resources::parse(
+  TResource volume = TResources::parse(
       "disk",
       stringify(size.megabytes()),
       role).get();
@@ -880,7 +880,7 @@ inline TResource createPersistentVolume(
 
 // Note that `reservationPrincipal` should be specified if and only if
 // the volume uses dynamically reserved resources.
-template <typename TResource, typename TVolume>
+template <typename TResource, typename TResources, typename TVolume>
 inline TResource createPersistentVolume(
     TResource volume,
     const std::string& persistenceId,
@@ -1160,7 +1160,7 @@ inline Resource::DiskInfo::Source 
createDiskSourceMount(Args&&... args)
 template <typename... Args>
 inline Resource createDiskResource(Args&&... args)
 {
-  return common::createDiskResource<Resource, Volume>(
+  return common::createDiskResource<Resource, Resources, Volume>(
       std::forward<Args>(args)...);
 }
 
@@ -1168,7 +1168,7 @@ inline Resource createDiskResource(Args&&... args)
 template <typename... Args>
 inline Resource createPersistentVolume(Args&&... args)
 {
-  return common::createPersistentVolume<Resource, Volume>(
+  return common::createPersistentVolume<Resource, Resources, Volume>(
       std::forward<Args>(args)...);
 }
 
@@ -1373,16 +1373,20 @@ inline mesos::v1::Resource::DiskInfo::Source 
createDiskSourceMount(
 template <typename... Args>
 inline mesos::v1::Resource createDiskResource(Args&&... args)
 {
-  return common::createDiskResource<mesos::v1::Resource, mesos::v1::Volume>(
-      std::forward<Args>(args)...);
+  return common::createDiskResource<
+      mesos::v1::Resource,
+      mesos::v1::Resources,
+      mesos::v1::Volume>(std::forward<Args>(args)...);
 }
 
 
 template <typename... Args>
 inline mesos::v1::Resource createPersistentVolume(Args&&... args)
 {
-  return common::createPersistentVolume<mesos::v1::Resource, 
mesos::v1::Volume>(
-      std::forward<Args>(args)...);
+  return common::createPersistentVolume<
+      mesos::v1::Resource,
+      mesos::v1::Resources,
+      mesos::v1::Volume>(std::forward<Args>(args)...);
 }
 
 

Reply via email to