packages feed

hs-mesos 0.20.0.0 → 0.20.0.2

raw patch · 6 files changed

+214/−65 lines, 6 filesdep +tastydep +tasty-hunitdep +tasty-quickcheckPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

Dependencies added: tasty, tasty-hunit, tasty-quickcheck

API changes (from Hackage documentation)

+ System.Mesos.Types: commandInfo :: CommandValue -> CommandInfo
+ System.Mesos.Types: taskInfo :: ByteString -> TaskID -> SlaveID -> [Resource] -> TaskExecutionInfo -> TaskInfo

Files

ext/executor.cpp view
@@ -146,7 +146,7 @@ 	return driver->sendStatusUpdate(*status); } -int sendExecutorDriverFrameworkMessage(ExecutorDriver* driver, int stringLength, char* stringData)+int sendExecutorDriverFrameworkMessage(ExecutorDriver* driver, char* stringData, int stringLength) { 	std::string message(stringData, stringLength); 	return driver->sendFrameworkMessage(message);
+ ext/executor.h view
@@ -0,0 +1,46 @@+#include <mesos/executor.hpp>+#include "types.h"++typedef void OnExecutorRegisteredCallback(mesos::ExecutorDriver*,+		const mesos::ExecutorInfo*,+		const mesos::FrameworkInfo*,+		const mesos::SlaveInfo*);++typedef void OnExecutorReRegisteredCallback(mesos::ExecutorDriver*,+		const mesos::SlaveInfo*);+typedef void OnExecutorDisconnectedCallback(mesos::ExecutorDriver*);+typedef void OnExecutorLaunchTaskCallback(mesos::ExecutorDriver*,+		const mesos::TaskInfo*);+typedef void OnExecutorTaskKilledCallback(mesos::ExecutorDriver*,+		const mesos::TaskID*);+typedef void OnExecutorFrameworkMessageCallback(mesos::ExecutorDriver*, int, const char*);+typedef void OnExecutorShutdownCallback(mesos::ExecutorDriver*);+typedef void OnExecutorErrorCallback(mesos::ExecutorDriver*, int, const char*);++typedef mesos::Executor *ExecutorPtr;+typedef mesos::ExecutorDriver *ExecutorDriverPtr;+extern "C" {++extern ExecutorPtr createExecutor(+	OnExecutorRegisteredCallback*,+	OnExecutorReRegisteredCallback*,+	OnExecutorDisconnectedCallback*,+	OnExecutorLaunchTaskCallback*,+	OnExecutorTaskKilledCallback*,+	OnExecutorFrameworkMessageCallback*,+	OnExecutorShutdownCallback*,+	OnExecutorErrorCallback*+);++extern void destroyExecutor(ExecutorPtr);++extern ExecutorDriverPtr createExecutorDriver(ExecutorPtr);+extern void destroyExecutorDriver(ExecutorDriverPtr);+extern int startExecutorDriver(ExecutorDriverPtr);+extern int stopExecutorDriver(ExecutorDriverPtr);+extern int abortExecutorDriver(ExecutorDriverPtr);+extern int joinExecutorDriver(ExecutorDriverPtr);+extern int runExecutorDriver(ExecutorDriverPtr);+extern int sendExecutorDriverStatusUpdate(ExecutorDriverPtr, TaskStatusPtr);+extern int sendExecutorDriverFrameworkMessage(ExecutorDriverPtr, char*, int);+}
+ ext/scheduler.h view
@@ -0,0 +1,110 @@+#include <mesos/scheduler.hpp>++typedef mesos::Scheduler *SchedulerPtr;+typedef mesos::SchedulerDriver *SchedulerDriverPtr;+typedef const mesos::FrameworkID *FrameworkIDPtr;+typedef const mesos::MasterInfo *MasterInfoPtr;+typedef const mesos::Offer *OfferPtr;+typedef const mesos::OfferID *OfferIDPtr;+typedef const mesos::TaskStatus *TaskStatusPtr;+typedef const mesos::SlaveID *SlaveIDPtr;+typedef const mesos::ExecutorID *ExecutorIDPtr;+typedef mesos::FrameworkInfo *FrameworkInfoPtr;+typedef mesos::Credential *CredentialPtr;+typedef mesos::Filters *FiltersPtr;+typedef mesos::Request *RequestPtr;+typedef mesos::TaskInfo *TaskInfoPtr;+typedef mesos::TaskID *TaskIDPtr;++typedef void OnSchedulerRegisteredCallback(SchedulerDriverPtr,+		const FrameworkIDPtr,+		const MasterInfoPtr);++typedef void OnSchedulerReRegisteredCallback(SchedulerDriverPtr,+		const MasterInfoPtr);++typedef void OnSchedulerDisconnectedCallback(SchedulerDriverPtr);++typedef void OnSchedulerResourceOffers(SchedulerDriverPtr,+		const OfferPtr*,+		int);++typedef void OnOfferRescinded(SchedulerDriverPtr,+		const OfferIDPtr);++typedef void OnStatusUpdate(SchedulerDriverPtr,+		const TaskStatusPtr);++typedef void OnFrameworkMessage(SchedulerDriverPtr,+		const ExecutorIDPtr,+		const SlaveIDPtr,+		const char*,+		int);++typedef void OnSlaveLost(SchedulerDriverPtr,+		const SlaveIDPtr);++typedef void OnExecutorLost(SchedulerDriverPtr,+		const ExecutorIDPtr,+		const SlaveIDPtr,+		int status);++typedef void OnSchedulerError(SchedulerDriverPtr,+		const char*,+		int);++extern "C" {+	extern SchedulerPtr createScheduler(OnSchedulerRegisteredCallback*,+			OnSchedulerReRegisteredCallback*,+			OnSchedulerDisconnectedCallback*,+			OnSchedulerResourceOffers*,+			OnOfferRescinded*,+			OnStatusUpdate*,+			OnFrameworkMessage*,+			OnSlaveLost*,+			OnExecutorLost*,+			OnSchedulerError*);++	extern void destroyScheduler(SchedulerPtr);+	extern void exerciseMethods(SchedulerPtr);++	extern SchedulerDriverPtr createSchedulerDriver(+			SchedulerPtr,+			FrameworkInfoPtr,+			char*,+			int);++	extern SchedulerDriverPtr createSchedulerDriverWithCredentials(+			SchedulerPtr,+			FrameworkInfoPtr,+			char*,+			int,+			CredentialPtr);++	extern void destroySchedulerDriver(SchedulerDriverPtr);	+	extern int startSchedulerDriver(SchedulerDriverPtr);+	extern int stopSchedulerDriver(SchedulerDriverPtr, bool failover);+	extern int abortSchedulerDriver(SchedulerDriverPtr);+	extern int joinSchedulerDriver(SchedulerDriverPtr);+	extern int runSchedulerDriver(SchedulerDriverPtr);+	extern int requestResources(SchedulerDriverPtr, RequestPtr*, int);+	extern int launchTasks(SchedulerDriverPtr,+			OfferIDPtr*,+			int,+			TaskInfoPtr*,+			int,+			FiltersPtr);+	extern int killTask(SchedulerDriverPtr, TaskIDPtr);+	extern int declineOffer(SchedulerDriverPtr,+			OfferIDPtr,+			FiltersPtr);+	extern int reviveOffers(SchedulerDriverPtr);+	extern int schedulerDriverSendFrameworkMessage(SchedulerDriverPtr,+			ExecutorIDPtr,+			SlaveIDPtr,+			char*,+			int);+	extern int reconcileTasks(SchedulerDriverPtr,+			TaskStatusPtr*,+			int);+}
hs-mesos.cabal view
@@ -1,5 +1,5 @@ name:                hs-mesos-version:             0.20.0.0+version:             0.20.0.2  description:         Bindings to the Apache Mesos platform.                      .@@ -63,6 +63,8 @@   hs-source-dirs:      src   default-language:    Haskell2010   include-dirs:        ext, /usr/include, /usr/local/include/mesos+  install-includes:    ext/executor.h,+                       ext/scheduler.h   c-sources:           ext/executor.cpp,                        ext/scheduler.cpp,                        ext/types/attribute.cpp,@@ -102,13 +104,13 @@   extra-libraries:     mesos stdc++   extra-lib-dirs:      /usr/local/lib   cc-options:          -fPIC -std=c++11-  ghc-options:         -fPIC+  ghc-options:         -fPIC -funbox-strict-fields  test-suite test   type:                exitcode-stdio-1.0   main-is:             Main.hs   hs-source-dirs:      test-  build-depends:       base, hs-mesos, QuickCheck, bytestring, lens, managed+  build-depends:       base, hs-mesos, tasty, tasty-quickcheck, tasty-hunit, QuickCheck, bytestring, lens, managed   default-language:    Haskell2010  executable test-executor
src/System/Mesos/Types.hs view
@@ -18,8 +18,10 @@   filters,   -- ** Launching Tasks   TaskInfo(..),+  taskInfo,   TaskExecutionInfo(..),   CommandInfo(..),+  commandInfo,   CommandURI(..),   commandURI,   CommandValue (..),@@ -222,6 +224,9 @@   }   deriving (Show, Eq) +commandInfo :: CommandValue -> CommandInfo+commandInfo v = CommandInfo [] Nothing v Nothing+ data CommandURI = CommandURI   { commandURIValue      :: !ByteString   , commandURIExecutable :: !(Maybe Bool)@@ -506,6 +511,9 @@   , taskHealthCheck    :: !(Maybe HealthCheck)   }   deriving (Show, Eq)++taskInfo :: ByteString -> TaskID -> SlaveID -> [Resource] -> TaskExecutionInfo -> TaskInfo+taskInfo n t s rs i = TaskInfo n t s rs i Nothing Nothing Nothing  -- | Describes the current status of a task. data TaskStatus = TaskStatus
test/Main.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings          #-} {-# LANGUAGE StandaloneDeriving         #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}+{-# OPTIONS_GHC -fno-warn-orphans       #-} module Main where import           Control.Applicative import           Control.Monad.Managed@@ -15,6 +15,9 @@ import           System.Mesos.Raw.Parameters import           System.Mesos.Scheduler import           System.Mesos.Types+import           Test.Tasty+import qualified Test.Tasty.HUnit             as Unit+import           Test.Tasty.QuickCheck import           Test.QuickCheck import           Test.QuickCheck.Arbitrary import           Test.QuickCheck.Monadic@@ -29,7 +32,7 @@   return x'  main :: IO ()-main = testIDs+main = defaultMain $ testGroup "Mesos" [testIDs, executorTests, schedulerTests]  instance Arbitrary CUInt where   arbitrary = CUInt <$> arbitrary@@ -301,64 +304,44 @@         print res       assert False -qcIM :: (Show a, Eq a, CPPValue a) => Gen a -> IO ()-qcIM = quickCheck . prop_idempotentMarshalling+qcIM :: (Show a, Eq a, CPPValue a) => String -> Gen a -> TestTree+qcIM n = testProperty n . prop_idempotentMarshalling -testIDs = do-  putStrLn "Testing ExecutorInfo"-  qcIM (arbitrary :: Gen ExecutorInfo)-  putStrLn "Testing TaskInfo"-  qcIM (arbitrary :: Gen TaskInfo)-  putStrLn "Testing Volume"-  qcIM (arbitrary :: Gen Volume)-  putStrLn "Testing HealthCheck"-  qcIM (arbitrary :: Gen HealthCheck)-  putStrLn "Testing ContainerInfo"-  qcIM (arbitrary :: Gen ContainerInfo)-  putStrLn "Testing Value"-  qcIM (arbitrary :: Gen Value)-  putStrLn "Testing FrameworkID"-  qcIM (arbitrary :: Gen FrameworkID)-  putStrLn "Testing OfferID"-  qcIM (arbitrary :: Gen OfferID)-  putStrLn "Testing SlaveID"-  qcIM (arbitrary :: Gen SlaveID)-  putStrLn "Testing TaskID"-  qcIM (arbitrary :: Gen TaskID)-  putStrLn "Testing ExecutorID"-  qcIM (arbitrary :: Gen ExecutorID)-  putStrLn "Testing ContainerID"-  qcIM (arbitrary :: Gen ContainerID)-  putStrLn "Testing Filters"-  qcIM (arbitrary :: Gen Filters)-  putStrLn "Testing Environment"-  qcIM (arbitrary :: Gen Environment)-  putStrLn "Testing FrameworkInfo"-  qcIM (arbitrary :: Gen FrameworkInfo)-  putStrLn "Testing CommandURI"-  qcIM (arbitrary :: Gen CommandURI)-  putStrLn "Testing Credential"-  qcIM (arbitrary :: Gen Credential)-  putStrLn "Testing TaskStatus"-  qcIM (arbitrary :: Gen TaskStatus)-  putStrLn "Testing ResourceUsage"-  qcIM (arbitrary :: Gen ResourceUsage)-  putStrLn "Testing ResourceStatistics"-  qcIM (arbitrary :: Gen ResourceStatistics)-  putStrLn "Testing Parameters"-  qcIM (arbitrary :: Gen Parameters)-  putStrLn "Testing Attribute"-  qcIM (arbitrary :: Gen Attribute)-  putStrLn "Testing Resource"-  qcIM (arbitrary :: Gen Resource)-  putStrLn "Testing CommandInfo"-  qcIM (arbitrary :: Gen CommandInfo)-  putStrLn "Testing MasterInfo"-  qcIM (arbitrary :: Gen MasterInfo)-  putStrLn "Testing Request"-  qcIM (arbitrary :: Gen Request)-  putStrLn "Testing Offer"-  qcIM (arbitrary :: Gen Offer)-  putStrLn "Testing SlaveInfo"-  qcIM (arbitrary :: Gen SlaveInfo)+testIDs = testGroup "Marshalling"+  [ qcIM "ExecutorInfo" (arbitrary :: Gen ExecutorInfo)+  , qcIM "TaskInfo" (arbitrary :: Gen TaskInfo)+  , qcIM "Volume" (arbitrary :: Gen Volume)+  , qcIM "HealthCheck" (arbitrary :: Gen HealthCheck)+  , qcIM "ContainerInfo" (arbitrary :: Gen ContainerInfo)+  , qcIM "Value" (arbitrary :: Gen Value)+  , qcIM "FrameworkInfo" (arbitrary :: Gen FrameworkID)+  , qcIM "OfferID" (arbitrary :: Gen OfferID)+  , qcIM "SlaveID" (arbitrary :: Gen SlaveID)+  , qcIM "TaskID" (arbitrary :: Gen TaskID)+  , qcIM "ExecutorID" (arbitrary :: Gen ExecutorID)+  , qcIM "ContainerID" (arbitrary :: Gen ContainerID)+  , qcIM "Filters" (arbitrary :: Gen Filters)+  , qcIM "Environment" (arbitrary :: Gen Environment)+  , qcIM "FrameworkInfo" (arbitrary :: Gen FrameworkInfo)+  , qcIM "CommandURI" (arbitrary :: Gen CommandURI)+  , qcIM "Credential" (arbitrary :: Gen Credential)+  , qcIM "TaskStatus" (arbitrary :: Gen TaskStatus)+  , qcIM "ResourceUsage" (arbitrary :: Gen ResourceUsage)+  , qcIM "ResourceStatistics" (arbitrary :: Gen ResourceStatistics)+  , qcIM "Parameters" (arbitrary :: Gen Parameters)+  , qcIM "Attribute" (arbitrary :: Gen Attribute)+  , qcIM "Resource" (arbitrary :: Gen Resource)+  , qcIM "CommandInfo" (arbitrary :: Gen CommandInfo)+  , qcIM "MasterInfo" (arbitrary :: Gen MasterInfo)+  , qcIM "Request" (arbitrary :: Gen Request)+  , qcIM "Offer" (arbitrary :: Gen Offer)+  , qcIM "SlaveInfo" (arbitrary :: Gen SlaveInfo)+  ] +executorTests = testGroup "Executor"+  [+  ]++schedulerTests = testGroup "Scheduler"+  [+  ]