/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */

const DFLT_CLUSTER = {
    localHost: '0.0.0.0',
    activeOnStart: true,
    cacheSanityCheckEnabled: true,
    discovery: {
        localPort: 47500,
        localPortRange: 100,
        socketTimeout: 5000,
        ackTimeout: 5000,
        maxAckTimeout: 600000,
        networkTimeout: 5000,
        joinTimeout: 0,
        threadPriority: 10,
        heartbeatFrequency: 2000,
        maxMissedHeartbeats: 1,
        maxMissedClientHeartbeats: 5,
        topHistorySize: 1000,
        reconnectCount: 10,
        statisticsPrintFrequency: 0,
        ipFinderCleanFrequency: 60000,
        forceServerMode: false,
        clientReconnectDisabled: false,
        Multicast: {
            multicastGroup: '228.1.2.4',
            multicastPort: 47400,
            responseWaitTime: 500,
            addressRequestAttempts: 2,
            localAddress: '0.0.0.0'
        },
        Jdbc: {
            initSchema: false
        },
        SharedFs: {
            path: 'disco/tcp'
        },
        ZooKeeper: {
            basePath: '/services',
            serviceName: 'ignite',
            allowDuplicateRegistrations: false,
            ExponentialBackoff: {
                baseSleepTimeMs: 1000,
                maxRetries: 10
            },
            BoundedExponentialBackoffRetry: {
                baseSleepTimeMs: 1000,
                maxSleepTimeMs: 2147483647,
                maxRetries: 10
            },
            UntilElapsed: {
                maxElapsedTimeMs: 60000,
                sleepMsBetweenRetries: 1000
            },
            RetryNTimes: {
                n: 10,
                sleepMsBetweenRetries: 1000
            },
            OneTime: {
                sleepMsBetweenRetry: 1000
            },
            Forever: {
                retryIntervalMs: 1000
            }
        },
        Kubernetes: {
            serviceName: 'ignite',
            namespace: 'default',
            masterUrl: 'https://kubernetes.default.svc.cluster.local:443',
            accountToken: '/var/run/secrets/kubernetes.io/serviceaccount/token'
        }
    },
    atomics: {
        atomicSequenceReserveSize: 1000,
        backups: 0,
        cacheMode: {
            clsName: 'org.apache.ignite.cache.CacheMode',
            value: 'PARTITIONED'
        }
    },
    binary: {
        compactFooter: true,
        typeConfigurations: {
            enum: false,
            enumValues: {
                keyClsName: 'java.lang.String',
                valClsName: 'java.lang.Integer',
                entries: []
            }
        }
    },
    collision: {
        kind: null,
        JobStealing: {
            activeJobsThreshold: 95,
            waitJobsThreshold: 0,
            messageExpireTime: 1000,
            maximumStealingAttempts: 5,
            stealingEnabled: true,
            stealingAttributes: {
                keyClsName: 'java.lang.String',
                valClsName: 'java.io.Serializable',
                items: []
            }
        },
        PriorityQueue: {
            priorityAttributeKey: 'grid.task.priority',
            jobPriorityAttributeKey: 'grid.job.priority',
            defaultPriority: 0,
            starvationIncrement: 1,
            starvationPreventionEnabled: true
        }
    },
    communication: {
        localPort: 47100,
        localPortRange: 100,
        sharedMemoryPort: 48100,
        directBuffer: false,
        directSendBuffer: false,
        idleConnectionTimeout: 30000,
        connectTimeout: 5000,
        maxConnectTimeout: 600000,
        reconnectCount: 10,
        socketSendBuffer: 32768,
        socketReceiveBuffer: 32768,
        messageQueueLimit: 1024,
        tcpNoDelay: true,
        ackSendThreshold: 16,
        unacknowledgedMessagesBufferSize: 0,
        socketWriteTimeout: 2000
    },
    networkTimeout: 5000,
    networkSendRetryDelay: 1000,
    networkSendRetryCount: 3,
    discoveryStartupDelay: 60000,
    connector: {
        port: 11211,
        portRange: 100,
        idleTimeout: 7000,
        idleQueryCursorTimeout: 600000,
        idleQueryCursorCheckFrequency: 60000,
        receiveBufferSize: 32768,
        sendBufferSize: 32768,
        sendQueueLimit: 0,
        directBuffer: false,
        noDelay: true,
        sslEnabled: false,
        sslClientAuth: false
    },
    deploymentMode: {
        clsName: 'org.apache.ignite.configuration.DeploymentMode',
        value: 'SHARED'
    },
    peerClassLoadingEnabled: false,
    peerClassLoadingMissedResourcesCacheSize: 100,
    peerClassLoadingThreadPoolSize: 2,
    failoverSpi: {
        JobStealing: {
            maximumFailoverAttempts: 5
        },
        Always: {
            maximumFailoverAttempts: 5
        }
    },
    failureDetectionTimeout: 10000,
    clientFailureDetectionTimeout: 30000,
    logger: {
        Log4j: {
            level: {
                clsName: 'org.apache.log4j.Level'
            }
        },
        Log4j2: {
            level: {
                clsName: 'org.apache.logging.log4j.Level'
            }
        }
    },
    marshalLocalJobs: false,
    marshallerCacheKeepAliveTime: 10000,
    metricsHistorySize: 10000,
    metricsLogFrequency: 60000,
    metricsUpdateFrequency: 2000,
    clockSyncSamples: 8,
    clockSyncFrequency: 120000,
    timeServerPortBase: 31100,
    timeServerPortRange: 100,
    transactionConfiguration: {
        defaultTxConcurrency: {
            clsName: 'org.apache.ignite.transactions.TransactionConcurrency',
            value: 'PESSIMISTIC'
        },
        defaultTxIsolation: {
            clsName: 'org.apache.ignite.transactions.TransactionIsolation',
            value: 'REPEATABLE_READ'
        },
        defaultTxTimeout: 0,
        pessimisticTxLogLinger: 10000,
        useJtaSynchronization: false,
        txTimeoutOnPartitionMapExchange: 0,
        deadlockTimeout: 10000
    },
    attributes: {
        keyClsName: 'java.lang.String',
        valClsName: 'java.lang.String',
        items: []
    },
    odbcConfiguration: {
        endpointAddress: '0.0.0.0:10800..10810',
        socketSendBufferSize: 0,
        socketReceiveBufferSize: 0,
        maxOpenCursors: 128
    },
    eventStorage: {
        Memory: {
            expireCount: 10000
        }
    },
    checkpointSpi: {
        S3: {
            bucketNameSuffix: 'default-bucket',
            clientConfiguration: {
                protocol: {
                    clsName: 'com.amazonaws.Protocol',
                    value: 'HTTPS'
                },
                maxConnections: 50,
                retryPolicy: {
                    retryCondition: {
                        clsName: 'com.amazonaws.retry.PredefinedRetryPolicies'
                    },
                    backoffStrategy: {
                        clsName: 'com.amazonaws.retry.PredefinedRetryPolicies'
                    },
                    maxErrorRetry: {
                        clsName: 'com.amazonaws.retry.PredefinedRetryPolicies'
                    },
                    honorMaxErrorRetryInClientConfig: false
                },
                maxErrorRetry: -1,
                socketTimeout: 50000,
                connectionTimeout: 50000,
                requestTimeout: 0,
                socketSendBufferSizeHints: 0,
                connectionTTL: -1,
                connectionMaxIdleMillis: 60000,
                responseMetadataCacheSize: 50,
                useReaper: true,
                useGzip: false,
                preemptiveBasicProxyAuth: false,
                useTcpKeepAlive: false,
                cacheResponseMetadata: true,
                clientExecutionTimeout: 0,
                socketSendBufferSizeHint: 0,
                socketReceiveBufferSizeHint: 0,
                useExpectContinue: true,
                useThrottleRetries: true
            }
        },
        JDBC: {
            checkpointTableName: 'CHECKPOINTS',
            keyFieldName: 'NAME',
            keyFieldType: 'VARCHAR',
            valueFieldName: 'VALUE',
            valueFieldType: 'BLOB',
            expireDateFieldName: 'EXPIRE_DATE',
            expireDateFieldType: 'DATETIME',
            numberOfRetries: 2
        }
    },
    loadBalancingSpi: {
        RoundRobin: {
            perTask: false
        },
        Adaptive: {
            loadProbe: {
                Job: {
                    useAverage: true
                },
                CPU: {
                    useAverage: true,
                    useProcessors: true,
                    processorCoefficient: 1
                },
                ProcessingTime: {
                    useAverage: true
                }
            }
        },
        WeightedRandom: {
            nodeWeight: 10,
            useWeights: false
        }
    },
    memoryConfiguration: {
        systemCacheInitialSize: 41943040,
        systemCacheMaxSize: 104857600,
        pageSize: 2048,
        defaultMemoryPolicyName: 'default',
        memoryPolicies: {
            name: 'default',
            initialSize: 268435456,
            pageEvictionMode: {
                clsName: 'org.apache.ignite.configuration.DataPageEvictionMode',
                value: 'DISABLED'
            },
            evictionThreshold: 0.9,
            emptyPagesPoolSize: 100,
            metricsEnabled: false,
            subIntervals: 5,
            rateTimeInterval: 60000
        }
    },
    dataStorageConfiguration: {
        systemCacheInitialSize: 41943040,
        systemCacheMaxSize: 104857600,
        pageSize: 4096,
        storagePath: 'db',
        dataRegionConfigurations: {
            name: 'default',
            initialSize: 268435456,
            pageEvictionMode: {
                clsName: 'org.apache.ignite.configuration.DataPageEvictionMode',
                value: 'DISABLED'
            },
            evictionThreshold: 0.9,
            emptyPagesPoolSize: 100,
            metricsEnabled: false,
            metricsSubIntervalCount: 5,
            metricsRateTimeInterval: 60000,
            checkpointPageBufferSize: 0
        },
        metricsEnabled: false,
        alwaysWriteFullPages: false,
        checkpointFrequency: 180000,
        checkpointPageBufferSize: 268435456,
        checkpointThreads: 4,
        checkpointWriteOrder: {
            clsName: 'org.apache.ignite.configuration.CheckpointWriteOrder',
            value: 'SEQUENTIAL'
        },
        walMode: {
            clsName: 'org.apache.ignite.configuration.WALMode',
            value: 'DEFAULT'
        },
        walPath: 'db/wal',
        walArchivePath: 'db/wal/archive',
        walSegments: 10,
        walSegmentSize: 67108864,
        walHistorySize: 20,
        walFlushFrequency: 2000,
        walFsyncDelayNanos: 1000,
        walRecordIteratorBufferSize: 67108864,
        lockWaitTime: 10000,
        walThreadLocalBufferSize: 131072,
        metricsSubIntervalCount: 5,
        metricsRateTimeInterval: 60000
    },
    utilityCacheKeepAliveTime: 60000,
    hadoopConfiguration: {
        mapReducePlanner: {
            Weighted: {
                localMapperWeight: 100,
                remoteMapperWeight: 100,
                localReducerWeight: 100,
                remoteReducerWeight: 100,
                preferLocalReducerThresholdWeight: 200
            }
        },
        finishedJobInfoTtl: 30000,
        maxTaskQueueSize: 8192
    },
    serviceConfigurations: {
        maxPerNodeCount: 0,
        totalCount: 0
    },
    longQueryWarningTimeout: 3000,
    persistenceStoreConfiguration: {
        metricsEnabled: false,
        alwaysWriteFullPages: false,
        checkpointingFrequency: 180000,
        checkpointingPageBufferSize: 268435456,
        checkpointingThreads: 1,
        walSegments: 10,
        walSegmentSize: 67108864,
        walHistorySize: 20,
        walFlushFrequency: 2000,
        walFsyncDelayNanos: 1000,
        walRecordIteratorBufferSize: 67108864,
        lockWaitTime: 10000,
        rateTimeInterval: 60000,
        tlbSize: 131072,
        subIntervals: 5,
        walMode: {
            clsName: 'org.apache.ignite.configuration.WALMode',
            value: 'DEFAULT'
        },
        walAutoArchiveAfterInactivity: -1
    },
    sqlConnectorConfiguration: {
        port: 10800,
        portRange: 100,
        socketSendBufferSize: 0,
        socketReceiveBufferSize: 0,
        tcpNoDelay: true,
        maxOpenCursorsPerConnection: 128
    },
    clientConnectorConfiguration: {
        port: 10800,
        portRange: 100,
        socketSendBufferSize: 0,
        socketReceiveBufferSize: 0,
        tcpNoDelay: true,
        maxOpenCursorsPerConnection: 128,
        idleTimeout: 0,
        jdbcEnabled: true,
        odbcEnabled: true,
        thinClientEnabled: true,
        sslEnabled: false,
        useIgniteSslContextFactory: true,
        sslClientAuth: false
    }
};

export default class IgniteClusterDefaults {
    constructor() {
        Object.assign(this, DFLT_CLUSTER);
    }
}
