blob: 6834916a88c94fbf5feffc1f69a291f17fc557dc [file] [log] [blame]
/*
*
* Copyright (c) 2018 Nest Labs, Inc.
* All rights reserved.
*
* Licensed 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.
*/
/**
* @file
* This file declares the CLI option handler for Mock WDM client
* and server objects.
*
*/
#ifndef MOCKWDMNODEOPTIONS_H_
#define MOCKWDMNODEOPTIONS_H_
#include <inttypes.h>
#include <Weave/Support/nlargparser.hpp>
using namespace nl::ArgParser;
enum
{
kToolOpt_WdmPublisherNodeId = 1000, // Specify the node ID of the WDM Publisher we should connect to
kToolOpt_WdmUseSubnetId, // True if the publisher is within the specified subnet
//kToolOpt_WdmSimpleViewClient,
//kToolOpt_WdmSimpleViewServer,
kToolOpt_WdmSubscriptionClient,
kToolOpt_WdmSubscriptionPublisher,
kToolOpt_WdmInitMutualSubscription,
kToolOpt_WdmRespMutualSubscription,
kToolOpt_TestCaseId,
kToolOpt_UseTCP,
kToolOpt_EnableStopTest,
kToolOpt_NumDataChangeBeforeCancellation,
kToolOpt_FinalStatus,
kToolOpt_TimeBetweenDataChangeMsec,
kToolOpt_TestIterations,
kToolOpt_TestDelayBetweenIterationMsec,
kToolOpt_EnableDataFlip,
kToolOpt_EnableDictionaryTest,
kToolOpt_SavePerfData,
kToolOpt_EventGenerator,
kToolOpt_TimeBetweenEvents,
kToolOpt_ClearDataSinkStateBetweenTests,
kToolOpt_TimeBetweenLivenessCheckSec,
kToolOpt_WdmEnableRetry,
kToolOpt_EnableMockTimestampInitialCounter,
kToolOpt_WdmSimpleSublessNotifyClient,
kToolOpt_WdmSimpleSublessNotifyServer,
kToolOpt_WdmSublessNotifyDestNodeId,
kToolOpt_WdmUpdateMutation,
kToolOpt_WdmUpdateNumberOfMutations,
kToolOpt_WdmUpdateNumberOfRepeatedMutations,
kToolOpt_WdmUpdateNumberOfTraits,
kToolOpt_WdmUpdateConditionality,
kToolOpt_WdmUpdateTiming,
kToolOpt_WdmUpdateDiscardOnError,
};
class MockWdmNodeOptions : public OptionSetBase
{
public:
enum WdmUpdateConditionality {
kConditionality_Conditional = 0,
kConditionality_Unconditional,
kConditionality_Mixed,
kConditionality_Alternate,
kConditionality_NumItems
};
static const char **GetConditionalityStrings(void);
enum WdmUpdateTiming {
kTiming_BeforeSub = 0,
kTiming_DuringSub,
kTiming_AfterSub,
kTiming_NoSub,
kTiming_NumItems
};
static const char **GetUpdateTimingStrings(void);
enum WdmUpdateMutation {
kMutation_OneLeaf = 0,
kMutation_SameLevelLeaves,
kMutation_DiffLevelLeaves,
kMutation_WholeDictionary,
kMutation_WholeLargeDictionary,
kMutation_FewDictionaryItems,
kMutation_ManyDictionaryItems,
kMutation_WholeDictionaryAndLeaf,
kMutation_OneStructure,
kMutation_OneLeafOneStructure,
kMutation_Root,
kMutation_RootWithLargeDictionary,
kMutation_NumItems
};
static const char **GetMutationStrings(void);
enum EventGeneratorType {
kGenerator_None = 0,
kGenerator_TestDebug,
kGenerator_TestLiveness,
kGenerator_TestSecurity,
kGenerator_TestTelemetry,
kGenerator_TestTrait,
kGenerator_NumItems
};
static const char **GetGeneratorStrings(void);
MockWdmNodeOptions();
uint64_t mWdmPublisherNodeId;
uint16_t mWdmUseSubnetId;
int mWdmRoleInTest;
bool mEnableMutualSubscription;
const char * mTestCaseId;
bool mUseTCP;
bool mEnableStopTest;
const char * mNumDataChangeBeforeCancellation;
const char * mFinalStatus;
const char * mTimeBetweenDataChangeMsec;
bool mEnableDataFlip;
EventGeneratorType mEventGeneratorType;
int mTimeBetweenEvents;
const char * mTimeBetweenLivenessCheckSec;
bool mEnableDictionaryTest;
bool mEnableRetry;
#if WDM_ENABLE_SUBSCRIPTIONLESS_NOTIFICATION
uint64_t mWdmSublessNotifyDestNodeId;
#endif // WDM_ENABLE_SUBSCRIPTIONLESS_NOTIFICATION
WdmUpdateConditionality mWdmUpdateConditionality;
WdmUpdateMutation mWdmUpdateMutation;
uint32_t mWdmUpdateNumberOfTraits;
uint32_t mWdmUpdateNumberOfMutations;
uint32_t mWdmUpdateNumberOfRepeatedMutations;
WdmUpdateTiming mWdmUpdateTiming;
bool mWdmUpdateDiscardOnError;
uint32_t mWdmUpdateMaxNumberOfTraits;
virtual bool HandleOption(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg);
};
extern MockWdmNodeOptions gMockWdmNodeOptions;
class TestWdmNextOptions : public OptionSetBase
{
public:
TestWdmNextOptions();
bool mEnableMockTimestampInitialCounter;
uint32_t mTestIterations;
uint32_t mTestDelayBetweenIterationMsec;
bool mSavePerfData;
bool mClearDataSinkState;
virtual bool HandleOption(const char *progName, OptionSet *optSet, int id, const char *name, const char *arg);
};
extern TestWdmNextOptions gTestWdmNextOptions;
#endif // MOCKWDMNODEOPTIONS_H_