/*
  Copyright Amazon.com, Inc. or its affiliates. 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.
*/

// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/aws/aws-advanced-go-wrapper/awssql/driver_infrastructure (interfaces: ConnectionPlugin)

// Package mock_driver_infrastructure is a generated GoMock package.
package mock_driver_infrastructure

import (
	driver "database/sql/driver"
	reflect "reflect"

	driver_infrastructure "github.com/aws/aws-advanced-go-wrapper/awssql/driver_infrastructure"
	host_info_util "github.com/aws/aws-advanced-go-wrapper/awssql/host_info_util"
	"github.com/aws/aws-advanced-go-wrapper/awssql/utils"
	gomock "github.com/golang/mock/gomock"
)

// MockConnectionPlugin is a mock of ConnectionPlugin interface.
type MockConnectionPlugin struct {
	ctrl     *gomock.Controller
	recorder *MockConnectionPluginMockRecorder
}

// MockConnectionPluginMockRecorder is the mock recorder for MockConnectionPlugin.
type MockConnectionPluginMockRecorder struct {
	mock *MockConnectionPlugin
}

// NewMockConnectionPlugin creates a new mock instance.
func NewMockConnectionPlugin(ctrl *gomock.Controller) *MockConnectionPlugin {
	mock := &MockConnectionPlugin{ctrl: ctrl}
	mock.recorder = &MockConnectionPluginMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockConnectionPlugin) EXPECT() *MockConnectionPluginMockRecorder {
	return m.recorder
}

// AcceptsStrategy mocks base method.
func (m *MockConnectionPlugin) AcceptsStrategy(arg0 string) bool {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "AcceptsStrategy", arg0)
	ret0, _ := ret[0].(bool)
	return ret0
}

// AcceptsStrategy indicates an expected call of AcceptsStrategy.
func (mr *MockConnectionPluginMockRecorder) AcceptsStrategy(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AcceptsStrategy", reflect.TypeOf((*MockConnectionPlugin)(nil).AcceptsStrategy), arg0)
}

// Connect mocks base method.
func (m *MockConnectionPlugin) Connect(arg0 *host_info_util.HostInfo, arg1 *utils.RWMap[string, string], arg2 bool, arg3 driver_infrastructure.ConnectFunc) (driver.Conn, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Connect", arg0, arg1, arg2, arg3)
	ret0, _ := ret[0].(driver.Conn)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Connect indicates an expected call of Connect.
func (mr *MockConnectionPluginMockRecorder) Connect(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Connect", reflect.TypeOf((*MockConnectionPlugin)(nil).Connect), arg0, arg1, arg2, arg3)
}

// Execute mocks base method.
func (m *MockConnectionPlugin) Execute(arg0 driver.Conn, arg1 string, arg2 driver_infrastructure.ExecuteFunc, arg3 ...interface{}) (interface{}, interface{}, bool, error) {
	m.ctrl.T.Helper()
	varargs := []interface{}{arg0, arg1, arg2}
	for _, a := range arg3 {
		varargs = append(varargs, a)
	}
	ret := m.ctrl.Call(m, "Execute", varargs...)
	ret0, _ := ret[0].(interface{})
	ret1, _ := ret[1].(interface{})
	ret2, _ := ret[2].(bool)
	ret3, _ := ret[3].(error)
	return ret0, ret1, ret2, ret3
}

// Execute indicates an expected call of Execute.
func (mr *MockConnectionPluginMockRecorder) Execute(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	varargs := append([]interface{}{arg0, arg1, arg2}, arg3...)
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Execute", reflect.TypeOf((*MockConnectionPlugin)(nil).Execute), varargs...)
}

// ForceConnect mocks base method.
func (m *MockConnectionPlugin) ForceConnect(arg0 *host_info_util.HostInfo, arg1 *utils.RWMap[string, string], arg2 bool, arg3 driver_infrastructure.ConnectFunc) (driver.Conn, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "ForceConnect", arg0, arg1, arg2, arg3)
	ret0, _ := ret[0].(driver.Conn)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// ForceConnect indicates an expected call of ForceConnect.
func (mr *MockConnectionPluginMockRecorder) ForceConnect(arg0, arg1, arg2, arg3 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ForceConnect", reflect.TypeOf((*MockConnectionPlugin)(nil).ForceConnect), arg0, arg1, arg2, arg3)
}

// GetHostInfoByStrategy mocks base method.
func (m *MockConnectionPlugin) GetHostInfoByStrategy(arg0 host_info_util.HostRole, arg1 string, arg2 []*host_info_util.HostInfo) (*host_info_util.HostInfo, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetHostInfoByStrategy", arg0, arg1, arg2)
	ret0, _ := ret[0].(*host_info_util.HostInfo)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetHostInfoByStrategy indicates an expected call of GetHostInfoByStrategy.
func (mr *MockConnectionPluginMockRecorder) GetHostInfoByStrategy(arg0, arg1, arg2 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHostInfoByStrategy", reflect.TypeOf((*MockConnectionPlugin)(nil).GetHostInfoByStrategy), arg0, arg1, arg2)
}

// GetHostSelectorStrategy mocks base method.
func (m *MockConnectionPlugin) GetHostSelectorStrategy(arg0 string) (driver_infrastructure.HostSelector, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetHostSelectorStrategy", arg0)
	ret0, _ := ret[0].(driver_infrastructure.HostSelector)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// GetHostSelectorStrategy indicates an expected call of GetHostSelectorStrategy.
func (mr *MockConnectionPluginMockRecorder) GetHostSelectorStrategy(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetHostSelectorStrategy", reflect.TypeOf((*MockConnectionPlugin)(nil).GetHostSelectorStrategy), arg0)
}

// GetPluginCode mocks base method.
func (m *MockConnectionPlugin) GetPluginCode() string {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetPluginCode")
	ret0, _ := ret[0].(string)
	return ret0
}

// GetPluginCode indicates an expected call of GetPluginCode.
func (mr *MockConnectionPluginMockRecorder) GetPluginCode() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetPluginCode", reflect.TypeOf((*MockConnectionPlugin)(nil).GetPluginCode))
}

// GetSubscribedMethods mocks base method.
func (m *MockConnectionPlugin) GetSubscribedMethods() []string {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "GetSubscribedMethods")
	ret0, _ := ret[0].([]string)
	return ret0
}

// GetSubscribedMethods indicates an expected call of GetSubscribedMethods.
func (mr *MockConnectionPluginMockRecorder) GetSubscribedMethods() *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetSubscribedMethods", reflect.TypeOf((*MockConnectionPlugin)(nil).GetSubscribedMethods))
}

// InitHostProvider mocks base method.
func (m *MockConnectionPlugin) InitHostProvider(arg0 *utils.RWMap[string, string], arg1 driver_infrastructure.HostListProviderService, arg2 func() error) error {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "InitHostProvider", arg0, arg1, arg2)
	ret0, _ := ret[0].(error)
	return ret0
}

// InitHostProvider indicates an expected call of InitHostProvider.
func (mr *MockConnectionPluginMockRecorder) InitHostProvider(arg0, arg1, arg2 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InitHostProvider", reflect.TypeOf((*MockConnectionPlugin)(nil).InitHostProvider), arg0, arg1, arg2)
}

// NotifyConnectionChanged mocks base method.
func (m *MockConnectionPlugin) NotifyConnectionChanged(arg0 map[driver_infrastructure.HostChangeOptions]bool) driver_infrastructure.OldConnectionSuggestedAction {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "NotifyConnectionChanged", arg0)
	ret0, _ := ret[0].(driver_infrastructure.OldConnectionSuggestedAction)
	return ret0
}

// NotifyConnectionChanged indicates an expected call of NotifyConnectionChanged.
func (mr *MockConnectionPluginMockRecorder) NotifyConnectionChanged(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NotifyConnectionChanged", reflect.TypeOf((*MockConnectionPlugin)(nil).NotifyConnectionChanged), arg0)
}

// NotifyHostListChanged mocks base method.
func (m *MockConnectionPlugin) NotifyHostListChanged(arg0 map[string]map[driver_infrastructure.HostChangeOptions]bool) {
	m.ctrl.T.Helper()
	m.ctrl.Call(m, "NotifyHostListChanged", arg0)
}

// NotifyHostListChanged indicates an expected call of NotifyHostListChanged.
func (mr *MockConnectionPluginMockRecorder) NotifyHostListChanged(arg0 interface{}) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "NotifyHostListChanged", reflect.TypeOf((*MockConnectionPlugin)(nil).NotifyHostListChanged), arg0)
}
