Skip to content

Commit

Permalink
DobbyManager_Usecases
Browse files Browse the repository at this point in the history
These are the DobbyManager usecases that covers the following Api's
-startContainerFromSpec
-startContainerFromBundle
-createBundle
  • Loading branch information
Prathyushakothuru committed Dec 13, 2023
1 parent 88ca482 commit 9397d81
Show file tree
Hide file tree
Showing 30 changed files with 2,901 additions and 378 deletions.
4 changes: 1 addition & 3 deletions unit_tests/L1_testing/mocks/ContainerIdMock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,7 @@ const std::string& ContainerId::str() const

const char* ContainerId::c_str() const
{
EXPECT_NE(impl, nullptr);

return impl->c_str();
return mId.c_str();
}

bool ContainerId::isValidContainerId(const std::string& id)
Expand Down
8 changes: 6 additions & 2 deletions unit_tests/L1_testing/mocks/DobbyBundleConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ class DobbyBundleConfigImpl {

virtual std::shared_ptr<rt_dobby_schema> config() const =0;
virtual bool restartOnCrash() const =0;
virtual bool writeConfigJson(const std::string& filePath) const = 0;
#ifdef LEGACY_COMPONENTS
virtual const std::map<std::string, Json::Value>& legacyPlugins() const =0;
#endif /* LEGACY_COMPONENTS */
virtual const std::map<std::string, Json::Value>& rdkPlugins() const = 0;
virtual bool isValid() const = 0;

Expand All @@ -47,12 +49,14 @@ class DobbyBundleConfig : public DobbyConfig {
~DobbyBundleConfig();

bool isValid() const;
#ifdef LEGACY_COMPONENTS
const std::map<std::string, Json::Value>& legacyPlugins() const;
#endif /* LEGACY_COMPONENTS */
const std::map<std::string, Json::Value>& rdkPlugins() const ;
static void setImpl(DobbyBundleConfigImpl* newImpl);
static DobbyBundleConfig* getInstance();
std::shared_ptr<rt_dobby_schema> config();
bool restartOnCrash() const;
bool writeConfigJson(const std::string& filePath) const;
};


Expand Down
9 changes: 5 additions & 4 deletions unit_tests/L1_testing/mocks/DobbyBundleConfigMock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,13 @@ bool DobbyBundleConfig::restartOnCrash() const
return impl->restartOnCrash();
}

bool DobbyBundleConfig::writeConfigJson(const std::string& filePath) const
#ifdef LEGACY_COMPONENTS
const std::map<std::string, Json::Value>& DobbyBundleConfig::legacyPlugins() const
{
EXPECT_NE(impl, nullptr);

return impl->writeConfigJson(filePath);
EXPECT_NE(impl, nullptr);
return impl->legacyPlugins();
}
#endif /* LEGACY_COMPONENTS */

const std::map<std::string, Json::Value>& DobbyBundleConfig::rdkPlugins() const
{
Expand Down
4 changes: 3 additions & 1 deletion unit_tests/L1_testing/mocks/DobbyBundleConfigMock.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@ class DobbyBundleConfigMock : public DobbyBundleConfigImpl {
public:
virtual ~DobbyBundleConfigMock() = default;

MOCK_METHOD(bool, writeConfigJson, (const std::string& filePath), (const,override));
MOCK_METHOD(std::shared_ptr<rt_dobby_schema>, config, (), (const,override));
MOCK_METHOD(bool, restartOnCrash, (), (const,override));
MOCK_METHOD(bool, isValid, (), (const,override));
#ifdef LEGACY_COMPONENTS
MOCK_METHOD((const std::map<std::string, Json::Value>&), legacyPlugins, (), (const));
#endif /* LEGACY_COMPONENTS */
MOCK_METHOD((const std::map<std::string, Json::Value>&), rdkPlugins, (), (const,override));
};

14 changes: 4 additions & 10 deletions unit_tests/L1_testing/mocks/DobbyConfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ class DobbyConfigImpl {
virtual ~DobbyConfigImpl() =default;

virtual bool writeConfigJson(const std::string& filePath) const = 0;
virtual const std::map<std::string, Json::Value>& rdkPlugins() const = 0;
virtual std::shared_ptr<rt_dobby_schema> config() const = 0;
virtual bool changeProcessArgs(const std::string& command) = 0;
virtual bool addWesterosMount(const std::string& socketPath) = 0;
Expand All @@ -49,11 +48,6 @@ class DobbyConfigImpl {
virtual void setApparmorProfile(const std::string& profileName) = 0;
virtual std::string configJson() const = 0;

#if defined(LEGACY_COMPONENTS)
virtual std::string spec() const =0;
virtual const std::map<std::string, Json::Value>& legacyPlugins() const = 0;
#endif //defined(LEGACY_COMPONENTS)

};

class DobbyConfig {
Expand All @@ -67,9 +61,8 @@ class DobbyConfig {
~DobbyConfig(){}

static void setImpl(DobbyConfigImpl* newImpl);
static DobbyConfig* getInstance();
bool writeConfigJson(const std::string& filePath) const;
static const std::map<std::string, Json::Value>& rdkPlugins();
virtual const std::map<std::string, Json::Value>& rdkPlugins() const = 0;
const std::shared_ptr<rt_dobby_schema> config();
bool changeProcessArgs(const std::string& command);
bool addWesterosMount(const std::string& socketPath);
Expand All @@ -79,8 +72,9 @@ class DobbyConfig {
const std::string configJson() const;

#if defined(LEGACY_COMPONENTS)
static const std::string spec();
static const std::map<std::string, Json::Value>& legacyPlugins();
virtual const std::string spec() const
{ return std::string(); }
virtual const std::map<std::string, Json::Value>& legacyPlugins() const = 0;
#endif //defined(LEGACY_COMPONENTS)

};
Expand Down
38 changes: 0 additions & 38 deletions unit_tests/L1_testing/mocks/DobbyConfigMock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,53 +26,20 @@ void DobbyConfig::setImpl(DobbyConfigImpl* newImpl)
impl = newImpl;
}

DobbyConfig* DobbyConfig::getInstance()
{
static DobbyConfig* instance = nullptr;
if (nullptr == instance)
{
instance = new DobbyConfig();
}
return instance;
}

bool DobbyConfig::writeConfigJson(const std::string& filePath) const
{
EXPECT_NE(impl, nullptr);

return impl->writeConfigJson(filePath);
}

const std::map<std::string, Json::Value>& DobbyConfig::rdkPlugins()
{
EXPECT_NE(impl, nullptr);

return impl->rdkPlugins();
}

const std::shared_ptr<rt_dobby_schema> DobbyConfig::config()
{
EXPECT_NE(impl, nullptr);

return impl->config();
}

#if defined(LEGACY_COMPONENTS)

const std::string DobbyConfig::spec()
{
EXPECT_NE(impl, nullptr);

return impl->spec();
}

const std::map<std::string, Json::Value>& DobbyConfig::legacyPlugins()
{
EXPECT_NE(impl, nullptr);

return impl->legacyPlugins();
}

bool DobbyConfig::changeProcessArgs(const std::string& command)
{
EXPECT_NE(impl, nullptr);
Expand Down Expand Up @@ -114,8 +81,3 @@ const std::string DobbyConfig::configJson() const

return impl->configJson();
}


#endif //defined(LEGACY_COMPONENTS)


6 changes: 0 additions & 6 deletions unit_tests/L1_testing/mocks/DobbyConfigMock.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ class DobbyConfigMock : public DobbyConfigImpl {
virtual ~DobbyConfigMock() = default;

MOCK_METHOD(bool, writeConfigJson, (const std::string& filePath), (const,override));
MOCK_METHOD((std::map<std::string, Json::Value>&), rdkPlugins, (), (const,override));
MOCK_METHOD((std::shared_ptr<rt_dobby_schema>), config, (), (const,override));
MOCK_METHOD(bool, changeProcessArgs, (const std::string& command), (override));
MOCK_METHOD(bool, addWesterosMount, (const std::string& socketPath), (override));
Expand All @@ -37,9 +36,4 @@ class DobbyConfigMock : public DobbyConfigImpl {
MOCK_METHOD(void, setApparmorProfile, (const std::string& profileName), (override));
MOCK_METHOD(std::string, configJson, (), (const,override));

#if defined(LEGACY_COMPONENTS)
MOCK_METHOD(std::string, spec, (), (const,override));
MOCK_METHOD((std::map<std::string, Json::Value>&), legacyPlugins, (), (const,override));
#endif //defined(LEGACY_COMPONENTS)

};
2 changes: 2 additions & 0 deletions unit_tests/L1_testing/mocks/DobbyContainer.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ class DobbyContainerImpl {
virtual void clearRestartOnCrash() = 0;
virtual bool shouldRestart(int statusCode) = 0;
virtual const std::list<int>& files() const = 0;
virtual int32_t allocDescriptor() = 0;
};

class DobbyContainer {
Expand Down Expand Up @@ -77,6 +78,7 @@ class DobbyContainer {
void setRestartOnCrash(const std::list<int>& files);
void clearRestartOnCrash();
const std::list<int>& files() const;
static int32_t allocDescriptor();
};

#endif // DOBBYCONTAINER_H
Expand Down
19 changes: 17 additions & 2 deletions unit_tests/L1_testing/mocks/DobbyContainerMock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,24 @@ DobbyContainer::DobbyContainer(): descriptor(0)
{
}

DobbyContainer::DobbyContainer(const std::shared_ptr<const DobbyBundle>& _bundle,const std::shared_ptr<const DobbyConfig>& _config,const std::shared_ptr<const DobbyRootfs>& _rootfs):descriptor(0)
DobbyContainer::DobbyContainer(const std::shared_ptr<const DobbyBundle>& _bundle,
const std::shared_ptr<const DobbyConfig>& _config,
const std::shared_ptr<const DobbyRootfs>& _rootfs)
: descriptor(allocDescriptor())
, bundle(_bundle)
, config(_config)
, rootfs(_rootfs)
, containerPid(-1)
, hasCurseOfDeath(false)
, state(State::Starting)
{
}

DobbyContainer::DobbyContainer(const std::shared_ptr<const DobbyBundle>& _bundle,
const std::shared_ptr<const DobbyConfig>& _config,
const std::shared_ptr<const DobbyRootfs>& _rootfs,
const std::shared_ptr<const DobbyRdkPluginManager>& _rdkPluginManager)
: descriptor(0)
: descriptor(allocDescriptor())
, bundle(_bundle)
, config(_config)
, rootfs(_rootfs)
Expand Down Expand Up @@ -90,3 +99,9 @@ const std::list<int>& DobbyContainer::files() const
return impl->files();
}

int32_t DobbyContainer::allocDescriptor()
{
EXPECT_NE(impl, nullptr);

return impl->allocDescriptor();
}
1 change: 1 addition & 0 deletions unit_tests/L1_testing/mocks/DobbyContainerMock.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,5 @@ class DobbyContainerMock : public DobbyContainerImpl {
MOCK_METHOD(void, clearRestartOnCrash, (), (override));
MOCK_METHOD(bool, shouldRestart, (int statusCode), (override));
MOCK_METHOD((const std::list<int>&), files, (), (const, override));
MOCK_METHOD(int32_t, allocDescriptor, (), (override));
};
13 changes: 8 additions & 5 deletions unit_tests/L1_testing/mocks/DobbyEnv.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ class DobbyEnvImpl {
virtual std::string flashMountPath() const = 0;
virtual std::string pluginsWorkspacePath() const = 0;
virtual uint16_t platformIdent() const = 0;
virtual std::string cgroupMountPath(IDobbyEnv::Cgroup cgroup) const = 0;
};

class DobbyEnv {
class DobbyEnv : public IDobbyEnv{

protected:
static DobbyEnvImpl* impl;
Expand All @@ -48,10 +49,12 @@ class DobbyEnv {
DobbyEnv(const std::shared_ptr<const IDobbySettings>& settings);
static void setImpl(DobbyEnvImpl* newImpl);
static DobbyEnv* getInstance();
std::string workspaceMountPath() const;
std::string flashMountPath() const;
std::string pluginsWorkspacePath() const;
uint16_t platformIdent() const;
std::string workspaceMountPath() const override;
std::string flashMountPath() const override;
std::string pluginsWorkspacePath() const override;
uint16_t platformIdent() const override;
std::string cgroupMountPath(Cgroup cgroup) const override;

};

#endif // !defined(DOBBYENV_H)
8 changes: 8 additions & 0 deletions unit_tests/L1_testing/mocks/DobbyEnvMock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,11 @@ uint16_t DobbyEnv::platformIdent() const

return impl->platformIdent();
}

std::string DobbyEnv::cgroupMountPath(IDobbyEnv::Cgroup cgroup) const
{
EXPECT_NE(impl, nullptr);

return impl->cgroupMountPath(cgroup);
}

4 changes: 1 addition & 3 deletions unit_tests/L1_testing/mocks/DobbyEnvMock.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,13 @@ class DobbyEnvMock : public DobbyEnvImpl {

public:

DobbyEnvMock(const std::shared_ptr<const IDobbySettings>& settings)
: mSettings(settings) {}

virtual ~DobbyEnvMock() = default;

MOCK_METHOD(std::string, workspaceMountPath, (), (const,override));
MOCK_METHOD(std::string, flashMountPath, (), (const,override));
MOCK_METHOD(std::string, pluginsWorkspacePath, (), (const,override));
MOCK_METHOD(uint16_t, platformIdent, (), (const,override));
MOCK_METHOD(std::string ,cgroupMountPath, (IDobbyEnv::Cgroup cgroup), (const,override));

private:
const std::shared_ptr<const IDobbySettings> mSettings;
Expand Down
27 changes: 23 additions & 4 deletions unit_tests/L1_testing/mocks/DobbyIPCUtils.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,29 @@
#define DOBBYIPCUTILS_H

#include <IIpcService.h>

#include "IDobbyIPCUtils.h"
#include <map>
#include <mutex>
#include <functional>


class DobbyIPCUtilsImpl
{
public:
virtual bool setAIDbusAddress(bool privateBus, const std::string &address) = 0;
public:
virtual bool setAIDbusAddress(bool privateBus, const std::string &address) = 0;
virtual std::shared_ptr<AI_IPC::IAsyncReplyGetter> ipcInvokeMethod(const IDobbyIPCUtils::BusType &bus,const AI_IPC::Method &method,const AI_IPC::VariantList &args,int timeoutMs) const = 0;
virtual bool ipcInvokeMethod(const IDobbyIPCUtils::BusType &bus,const AI_IPC::Method &method,const AI_IPC::VariantList &args,AI_IPC::VariantList &replyArgs) const = 0;
virtual bool ipcEmitSignal(const IDobbyIPCUtils::BusType &bus,const AI_IPC::Signal &signal,const AI_IPC::VariantList &args) const = 0;
virtual bool ipcServiceAvailable(const IDobbyIPCUtils::BusType &bus,const std::string &serviceName) const = 0;
virtual int ipcRegisterServiceHandler(const IDobbyIPCUtils::BusType &bus,const std::string &serviceName,const std::function<void(bool)> &handlerFunc) = 0;
virtual int ipcRegisterSignalHandler(const IDobbyIPCUtils::BusType &bus,const AI_IPC::Signal &signal,const AI_IPC::SignalHandler &handlerFunc) = 0;
virtual void ipcUnregisterHandler(const IDobbyIPCUtils::BusType &bus, int handlerId) = 0;
virtual std::string ipcDbusAddress(const IDobbyIPCUtils::BusType &bus) const = 0;
virtual std::string ipcDbusSocketPath(const IDobbyIPCUtils::BusType &bus) const = 0;

};

class DobbyIPCUtils
class DobbyIPCUtils : public IDobbyIPCUtils
{

protected:
Expand All @@ -47,6 +57,15 @@ class DobbyIPCUtils
static void setImpl(DobbyIPCUtilsImpl* newImpl);
static DobbyIPCUtils* getInstance();
bool setAIDbusAddress(bool privateBus, const std::string &address);
std::shared_ptr<AI_IPC::IAsyncReplyGetter> ipcInvokeMethod(const BusType &bus,const AI_IPC::Method &method,const AI_IPC::VariantList &args,int timeoutMs) const override;
bool ipcInvokeMethod(const BusType &bus,const AI_IPC::Method &method,const AI_IPC::VariantList &args,AI_IPC::VariantList &replyArgs) const override;
bool ipcEmitSignal(const BusType &bus,const AI_IPC::Signal &signal,const AI_IPC::VariantList &args) const override;
bool ipcServiceAvailable(const BusType &bus,const std::string &serviceName) const override;
int ipcRegisterServiceHandler(const BusType &bus,const std::string &serviceName,const std::function<void(bool)> &handlerFunc) override;
int ipcRegisterSignalHandler(const BusType &bus,const AI_IPC::Signal &signal,const AI_IPC::SignalHandler &handlerFunc) override;
void ipcUnregisterHandler(const BusType &bus, int handlerId) override;
std::string ipcDbusAddress(const BusType &bus) const override;
std::string ipcDbusSocketPath(const BusType &bus) const override;
};

#endif
Loading

0 comments on commit 9397d81

Please sign in to comment.