[VOL-1349] EPON OLT adapter (package B)

Change-Id: I634ef62c53813dcf4456f54948f13e06358e263c
diff --git a/pkg/mocks/mockTechprofile.go b/pkg/mocks/mockTechprofile.go
new file mode 100644
index 0000000..4a71661
--- /dev/null
+++ b/pkg/mocks/mockTechprofile.go
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * 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.
+ */
+
+//Package mocks provides the mocks for openolt-adapter.
+package mocks
+
+import (
+	"context"
+
+	"github.com/opencord/voltha-lib-go/v3/pkg/db"
+	tp "github.com/opencord/voltha-lib-go/v3/pkg/techprofile"
+	tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
+)
+
+// MockTechProfile mock struct for OpenoltClient.
+type MockTechProfile struct {
+	TpID uint32
+}
+
+// SetKVClient to mock techprofile SetKVClient method
+func (m MockTechProfile) SetKVClient(ctx context.Context) *db.Backend {
+	return &db.Backend{Client: &MockKVClient{}}
+}
+
+// GetTechProfileInstanceKVPath to mock techprofile GetTechProfileInstanceKVPath method
+func (m MockTechProfile) GetTechProfileInstanceKVPath(ctx context.Context, techProfiletblID uint32, uniPortName string) string {
+	return ""
+
+}
+
+// GetTPInstanceFromKVStore to mock techprofile GetTPInstanceFromKVStore method
+func (m MockTechProfile) GetTPInstanceFromKVStore(ctx context.Context, techProfiletblID uint32, path string) (interface{}, error) {
+	logger.Debug(ctx, "Warning Warning Warning: GetTPInstanceFromKVStore")
+	return nil, nil
+
+}
+
+// CreateTechProfInstance to mock techprofile CreateTechProfInstance method
+func (m MockTechProfile) CreateTechProfInstance(ctx context.Context, techProfiletblID uint32, uniPortName string, intfID uint32) (interface{}, error) {
+
+	if techProfiletblID == 64 {
+		return &tp.TechProfile{
+			Name:                           "mock-tech-profile",
+			SubscriberIdentifier:           "257",
+			ProfileType:                    "mock",
+			Version:                        0,
+			NumGemPorts:                    2,
+			UpstreamGemPortAttributeList:   nil,
+			DownstreamGemPortAttributeList: nil,
+		}, nil
+	} else if techProfiletblID == 65 {
+		return &tp.EponProfile{
+			Name:                         "mock-epon-profile",
+			SubscriberIdentifier:         "257",
+			ProfileType:                  "mock",
+			Version:                      0,
+			NumGemPorts:                  2,
+			UpstreamQueueAttributeList:   nil,
+			DownstreamQueueAttributeList: nil,
+		}, nil
+	} else {
+		return nil, nil
+	}
+
+}
+
+// DeleteTechProfileInstance to mock techprofile DeleteTechProfileInstance method
+func (m MockTechProfile) DeleteTechProfileInstance(ctx context.Context, techProfiletblID uint32, uniPortName string) error {
+	return nil
+}
+
+// GetprotoBufParamValue to mock techprofile GetprotoBufParamValue method
+func (m MockTechProfile) GetprotoBufParamValue(ctx context.Context, paramType string, paramKey string) int32 {
+	return 0
+
+}
+
+// GetUsScheduler to mock techprofile GetUsScheduler method
+func (m MockTechProfile) GetUsScheduler(ctx context.Context, tpInstance *tp.TechProfile) (*tp_pb.SchedulerConfig, error) {
+	return &tp_pb.SchedulerConfig{}, nil
+
+}
+
+// GetDsScheduler to mock techprofile GetDsScheduler method
+func (m MockTechProfile) GetDsScheduler(ctx context.Context, tpInstance *tp.TechProfile) (*tp_pb.SchedulerConfig, error) {
+	return &tp_pb.SchedulerConfig{}, nil
+}
+
+// GetTrafficScheduler to mock techprofile GetTrafficScheduler method
+func (m MockTechProfile) GetTrafficScheduler(tpInstance *tp.TechProfile, SchedCfg *tp_pb.SchedulerConfig,
+	ShapingCfg *tp_pb.TrafficShapingInfo) *tp_pb.TrafficScheduler {
+	return &tp_pb.TrafficScheduler{}
+
+}
+
+// GetTrafficQueues to mock techprofile GetTrafficQueues method
+func (m MockTechProfile) GetTrafficQueues(ctx context.Context, tp *tp.TechProfile, Dir tp_pb.Direction) ([]*tp_pb.TrafficQueue, error) {
+	return []*tp_pb.TrafficQueue{{}}, nil
+}
+
+// GetMulticastTrafficQueues to mock techprofile GetMulticastTrafficQueues method
+func (m MockTechProfile) GetMulticastTrafficQueues(ctx context.Context, tp *tp.TechProfile) []*tp_pb.TrafficQueue {
+	return []*tp_pb.TrafficQueue{{}}
+}
+
+// GetGemportIDForPbit to mock techprofile GetGemportIDForPbit method
+func (m MockTechProfile) GetGemportIDForPbit(ctx context.Context, tp interface{}, Dir tp_pb.Direction, pbit uint32) uint32 {
+	return 0
+}
+
+// FindAllTpInstances to mock techprofile FindAllTpInstances method
+func (m MockTechProfile) FindAllTpInstances(ctx context.Context, techProfiletblID uint32, ponIntf uint32, onuID uint32) interface{} {
+	return []tp.TechProfile{}
+}