Merge branch 'ignite-164v2stable' into sprint-1 Conflicts: modules/core/src/main/java/org/apache/ignite/internal/util/nodestart/IgniteNodeStartUtils.java modules/core/src/main/java/org/apache/ignite/internal/util/nodestart/IgniteRemoteStartSpecification.java modules/ssh/src/main/java/org/apache/ignite/internal/util/nodestart/IgniteNodeCallableImpl.java modules/ssh/src/test/java/org/apache/ignite/internal/IgniteProjectionStartStopRestartSelfTest.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/22c8fea5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/22c8fea5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/22c8fea5 Branch: refs/heads/ignite-57 Commit: 22c8fea52a795353772d34f0dbcb03d6bdb12e9e Parents: e4365c3 9ef202a Author: Artem Shutak <ashu...@gridgain.com> Authored: Fri Feb 6 15:19:41 2015 +0300 Committer: Artem Shutak <ashu...@gridgain.com> Committed: Fri Feb 6 15:19:41 2015 +0300 ---------------------------------------------------------------------- bin/ignite.bat | 22 +- bin/ignite.sh | 4 +- bin/igniterouter.sh | 2 +- bin/ignitevisorcmd.bat | 26 +- bin/ignitevisorcmd.sh | 4 +- bin/include/functions.sh | 10 +- bin/include/parseargs.bat | 2 +- bin/include/parseargs.sh | 2 +- bin/include/service.sh | 8 +- bin/include/setenv.bat | 10 +- bin/include/setenv.sh | 8 +- bin/setup-hadoop.bat | 4 +- bin/setup-hadoop.sh | 6 +- config/hadoop/default-config.xml | 20 +- config/java.util.logging.properties | 2 +- config/router/default-router.xml | 4 +- .../test/config/aop/aspectj/META-INF/aop.xml | 8 +- .../config/aop/jboss/jboss-gridgain-aop.xml | 38 - .../GridifySetToXXXNonSpringAopSelfTest.java | 4 +- .../GridifySetToXXXSpringAopSelfTest.java | 4 +- .../ignite/gridify/NonSpringAopSelfTest.java | 6 +- .../testsuites/IgniteAopSelfTestSuite.java | 2 +- .../gridify/GridifySingleSplitLoadTest.java | 2 +- .../gridify/ExternalNonSpringAopSelfTest.java | 4 +- .../spi/checkpoint/s3/S3CheckpointSpi.java | 4 +- .../s3/TcpDiscoveryS3IpFinderSelfTest.java | 2 +- .../config/grid-client-config.properties | 4 +- .../config/grid-client-spring-config.xml | 4 +- modules/clients/readme.md | 8 +- .../ClientAbstractMultiThreadedSelfTest.java | 2 +- .../client/ClientDefaultCacheSelfTest.java | 2 +- .../ignite/client/ClientSslNodeStartup.java | 2 +- .../ignite/client/ClientStartNodeTask.java | 2 +- .../ClientPropertiesConfigurationSelfTest.java | 4 +- .../integration/ClientAbstractSelfTest.java | 12 +- .../ClientTcpConnectivitySelfTest.java | 6 +- .../rest/JettyRestProcessorSignedSelfTest.java | 4 +- .../rest/RestBinaryProtocolSelfTest.java | 2 +- .../processors/rest/RestProcessorTest.java | 28 +- .../protocols/tcp/TcpRestParserSelfTest.java | 4 +- .../ignite/jdbc/JdbcComplexQuerySelfTest.java | 2 +- .../ignite/jdbc/JdbcConnectionSelfTest.java | 2 +- .../ignite/jdbc/JdbcEmptyCacheSelfTest.java | 2 +- .../ignite/jdbc/JdbcLocalCachesSelfTest.java | 2 +- .../ignite/jdbc/JdbcMetadataSelfTest.java | 2 +- .../jdbc/JdbcPreparedStatementSelfTest.java | 2 +- .../ignite/jdbc/JdbcResultSetSelfTest.java | 2 +- .../ignite/jdbc/JdbcStatementSelfTest.java | 2 +- modules/clients/src/test/resources/log4j.xml | 12 +- .../clients/src/test/resources/spring-cache.xml | 16 +- .../src/test/resources/spring-router-ssl.xml | 6 +- .../src/test/resources/spring-router.xml | 6 +- .../src/test/resources/spring-server-node.xml | 10 +- .../test/resources/spring-server-ssl-node.xml | 10 +- .../src/main/java/org/apache/ignite/Ignite.java | 8 +- .../java/org/apache/ignite/IgniteCluster.java | 14 +- .../java/org/apache/ignite/IgniteCompute.java | 16 +- .../org/apache/ignite/IgniteDataLoader.java | 4 +- .../java/org/apache/ignite/IgniteEvents.java | 10 +- .../main/java/org/apache/ignite/IgniteFs.java | 4 +- .../java/org/apache/ignite/IgniteLogger.java | 14 +- .../java/org/apache/ignite/IgniteManaged.java | 36 +- .../java/org/apache/ignite/IgniteMessaging.java | 4 +- .../java/org/apache/ignite/IgnitePortables.java | 36 +- .../java/org/apache/ignite/IgniteScheduler.java | 6 +- .../java/org/apache/ignite/IgniteState.java | 2 +- .../main/java/org/apache/ignite/Ignition.java | 20 +- .../apache/ignite/cache/CacheProjection.java | 2 +- .../apache/ignite/cache/CachingProvider.java | 2 +- .../CacheRendezvousAffinityFunction.java | 2 +- .../cache/eviction/CacheEvictionPolicy.java | 6 +- .../apache/ignite/cache/query/CacheQueries.java | 2 +- .../apache/ignite/cache/query/CacheQuery.java | 14 +- .../ignite/cache/query/CacheQuerySqlField.java | 2 +- .../cache/query/annotations/QuerySqlField.java | 2 +- .../apache/ignite/cache/store/CacheStore.java | 2 +- .../cache/store/jdbc/CacheJdbcBlobStore.java | 6 +- .../org/apache/ignite/client/GridClient.java | 4 +- .../apache/ignite/client/GridClientCompute.java | 6 +- .../ignite/client/GridClientConfiguration.java | 4 +- .../apache/ignite/client/GridClientData.java | 2 +- .../client/impl/GridClientComputeImpl.java | 2 +- .../ignite/client/impl/GridClientImpl.java | 2 +- .../GridClientConnectionManagerAdapter.java | 2 +- .../impl/connection/GridClientTopology.java | 2 +- .../org/apache/ignite/client/impl/package.html | 2 +- .../client/marshaller/optimized/package.html | 2 +- .../impl/GridRouterCommandLineStartup.java | 2 +- .../client/router/impl/GridTcpRouterImpl.java | 2 +- .../org/apache/ignite/client/ssl/package.html | 2 +- .../org/apache/ignite/cluster/ClusterGroup.java | 4 +- .../org/apache/ignite/cluster/ClusterNode.java | 27 +- .../org/apache/ignite/compute/ComputeJob.java | 4 +- .../ignite/compute/ComputeJobAdapter.java | 2 +- .../ignite/compute/ComputeJobContext.java | 2 +- .../compute/ComputeJobContinuationAdapter.java | 2 +- .../org/apache/ignite/compute/ComputeTask.java | 2 +- .../ignite/compute/ComputeTaskMapAsync.java | 2 +- .../apache/ignite/compute/ComputeTaskName.java | 2 +- .../ignite/compute/ComputeTaskSession.java | 3 - .../apache/ignite/compute/ComputeTaskSpis.java | 2 +- .../apache/ignite/compute/gridify/Gridify.java | 10 +- .../ignite/compute/gridify/GridifyInput.java | 2 +- .../ignite/compute/gridify/GridifySetToSet.java | 16 +- .../compute/gridify/GridifySetToValue.java | 16 +- .../ClientConnectionConfiguration.java | 8 +- .../configuration/IgniteAddressResolver.java | 2 +- .../configuration/IgniteConfiguration.java | 110 +- .../configuration/IgniteDeploymentMode.java | 20 +- .../configuration/IgniteQueryConfiguration.java | 8 +- .../events/IgniteAuthenticationEvent.java | 8 +- .../ignite/events/IgniteAuthorizationEvent.java | 8 +- .../apache/ignite/events/IgniteCacheEvent.java | 12 +- .../events/IgniteCachePreloadingEvent.java | 12 +- .../events/IgniteCacheQueryExecutedEvent.java | 12 +- .../events/IgniteCacheQueryReadEvent.java | 12 +- .../ignite/events/IgniteCheckpointEvent.java | 12 +- .../ignite/events/IgniteDeploymentEvent.java | 12 +- .../ignite/events/IgniteDiscoveryEvent.java | 12 +- .../org/apache/ignite/events/IgniteEvent.java | 16 +- .../apache/ignite/events/IgniteEventType.java | 176 +- .../org/apache/ignite/events/IgniteFsEvent.java | 12 +- .../apache/ignite/events/IgniteJobEvent.java | 12 +- .../ignite/events/IgniteLicenseEvent.java | 12 +- .../ignite/events/IgniteSecureSessionEvent.java | 12 +- .../ignite/events/IgniteSwapSpaceEvent.java | 12 +- .../apache/ignite/events/IgniteTaskEvent.java | 16 +- .../java/org/apache/ignite/events/package.html | 2 +- .../apache/ignite/fs/IgniteFsConfiguration.java | 12 +- .../fs/IgniteFsGroupDataBlocksKeyMapper.java | 2 +- .../fs/IgniteFsInvalidHdfsVersionException.java | 4 +- .../ignite/internal/ClusterGroupAdapter.java | 2 +- .../apache/ignite/internal/GridComponent.java | 2 +- .../apache/ignite/internal/GridDiagnostic.java | 2 +- .../ignite/internal/GridKernalContext.java | 4 +- .../ignite/internal/GridKernalContextImpl.java | 2 +- .../apache/ignite/internal/GridKillTask.java | 2 +- .../ignite/internal/GridNodeAttributes.java | 141 -- .../apache/ignite/internal/GridProperties.java | 2 +- .../ignite/internal/GridUpdateNotifier.java | 2 +- .../ignite/internal/IgniteComponentType.java | 2 +- .../ignite/internal/IgniteEventsImpl.java | 2 +- .../org/apache/ignite/internal/IgniteEx.java | 2 +- .../apache/ignite/internal/IgniteKernal.java | 50 +- .../ignite/internal/IgniteNodeAttributes.java | 141 ++ .../org/apache/ignite/internal/IgnitionEx.java | 40 +- .../internal/fs/common/GridGgfsMessage.java | 2 +- .../internal/managers/GridManagerAdapter.java | 2 +- .../managers/communication/GridIoManager.java | 2 +- .../discovery/GridDiscoveryManager.java | 6 +- .../eventstorage/GridEventStorageManager.java | 4 +- .../managers/security/GridSecurityContext.java | 6 +- .../processors/cache/GridCacheAttributes.java | 6 +- .../processors/cache/GridCacheProcessor.java | 4 +- .../processors/cache/GridCacheUtils.java | 2 +- .../cache/query/GridCacheSqlIndexMetadata.java | 2 +- .../cache/query/GridCacheSqlMetadata.java | 4 +- .../clock/GridClockSyncProcessor.java | 2 +- .../internal/processors/fs/GridGgfsContext.java | 2 +- .../internal/processors/fs/GridGgfsImpl.java | 4 +- .../processors/fs/IgniteFsProcessor.java | 6 +- .../internal/processors/hadoop/GridHadoop.java | 2 +- .../processors/hadoop/GridHadoopJob.java | 4 +- .../hadoop/GridHadoopJobProperty.java | 4 +- .../license/GridLicenseProcessor.java | 2 +- .../license/GridLicenseSubsystem.java | 2 +- .../resource/GridSpringResourceContext.java | 2 +- .../processors/rest/GridRestProcessor.java | 2 +- .../processors/rest/client/message/package.html | 2 +- .../handlers/log/GridLogCommandHandler.java | 4 +- .../top/GridTopologyCommandHandler.java | 4 +- .../protocols/tcp/GridClientPacketType.java | 4 +- .../rest/protocols/tcp/GridTcpRestParser.java | 2 +- .../rest/protocols/tcp/GridTcpRestProtocol.java | 6 +- .../schedule/IgniteNoopScheduleProcessor.java | 4 +- .../spring/IgniteSpringProcessor.java | 4 +- .../streamer/GridStreamProcessor.java | 2 +- .../ignite/internal/product/IgniteProduct.java | 6 +- .../internal/product/IgniteProductLicense.java | 4 +- .../internal/util/GridConfigurationFinder.java | 12 +- .../ignite/internal/util/IgniteUtils.java | 84 +- .../ignite/internal/util/lang/GridFunc.java | 2 +- .../internal/util/lang/GridPeerDeployAware.java | 2 +- .../util/lang/GridPeerDeployAwareAdapter.java | 2 +- .../nio/GridConnectionBytesVerifyFilter.java | 2 +- .../util/portscanner/GridJmxPortFinder.java | 2 +- .../apache/ignite/internal/util/typedef/X.java | 8 +- .../visor/cache/VisorCacheConfiguration.java | 6 +- .../internal/visor/file/VisorFileBlockTask.java | 2 +- .../visor/file/VisorLatestTextFilesTask.java | 2 +- .../internal/visor/log/VisorLogSearchTask.java | 2 +- .../visor/node/VisorBasicConfiguration.java | 2 +- .../node/VisorExecutorServiceConfiguration.java | 18 +- .../streamer/VisorStreamerConfiguration.java | 6 +- .../internal/visor/util/VisorTaskUtils.java | 2 +- .../ignite/jdbc/IgniteJdbcConnection.java | 8 +- .../ignite/jdbc/IgniteJdbcDatabaseMetadata.java | 6 +- .../apache/ignite/jdbc/IgniteJdbcDriver.java | 30 +- .../apache/ignite/jdbc/IgniteJdbcResultSet.java | 2 +- .../apache/ignite/jdbc/IgniteJdbcStatement.java | 2 +- .../org/apache/ignite/lang/IgniteClosure.java | 2 +- .../org/apache/ignite/lang/IgnitePredicate.java | 2 +- .../apache/ignite/lifecycle/LifecycleAware.java | 2 +- .../apache/ignite/lifecycle/LifecycleBean.java | 4 +- .../ignite/logger/IgniteLoggerNodeIdAware.java | 2 +- .../ignite/logger/java/IgniteJavaLogger.java | 12 +- .../apache/ignite/managed/ManagedService.java | 14 +- .../managed/ManagedServiceConfiguration.java | 2 +- .../ignite/marshaller/IgniteMarshaller.java | 4 +- .../marshaller/IgniteMarshallerExclusions.java | 6 +- .../marshaller/jdk/IgniteJdkMarshaller.java | 2 +- .../optimized/IgniteOptimizedClassResolver.java | 2 +- .../optimized/IgniteOptimizedMarshallable.java | 2 +- .../optimized/IgniteOptimizedMarshaller.java | 4 +- .../IgniteOptimizedObjectInputStream.java | 2 +- .../IgniteOptimizedObjectOutputStream.java | 2 +- .../org/apache/ignite/mxbean/IgniteMXBean.java | 20 +- .../ignite/plugin/security/GridSecurity.java | 6 +- .../security/GridSecurityCredentials.java | 2 +- .../GridSecurityCredentialsProvider.java | 2 +- .../segmentation/GridSegmentationPolicy.java | 2 +- .../segmentation/GridSegmentationResolver.java | 2 +- .../ignite/portables/PortableBuilder.java | 4 +- .../ignite/portables/PortableConfiguration.java | 2 +- .../ignite/portables/PortableIdMapper.java | 4 +- .../ignite/portables/PortableMarshalAware.java | 2 +- .../apache/ignite/portables/PortableObject.java | 16 +- .../apache/ignite/portables/PortableReader.java | 6 +- .../apache/ignite/portables/PortableWriter.java | 6 +- .../ignite/resources/IgniteServiceResource.java | 2 +- .../IgniteSpringApplicationContextResource.java | 2 +- .../org/apache/ignite/spi/IgniteSpiAdapter.java | 6 +- .../ignite/spi/IgniteSpiConfiguration.java | 2 +- .../ignite/spi/IgniteSpiManagementMBean.java | 8 +- .../org/apache/ignite/spi/IgniteSpiThread.java | 2 +- .../spi/authentication/AuthenticationSpi.java | 6 +- .../noop/NoopAuthenticationSpi.java | 6 +- .../ignite/spi/checkpoint/CheckpointSpi.java | 4 +- .../checkpoint/cache/CacheCheckpointSpi.java | 6 +- .../spi/checkpoint/jdbc/JdbcCheckpointSpi.java | 4 +- .../sharedfs/SharedFsCheckpointSpi.java | 6 +- .../ignite/spi/collision/CollisionSpi.java | 6 +- .../fifoqueue/FifoQueueCollisionSpi.java | 4 +- .../jobstealing/JobStealingCollisionSpi.java | 2 +- .../PriorityQueueCollisionSpi.java | 2 +- .../spi/communication/CommunicationSpi.java | 6 +- .../communication/tcp/TcpCommunicationSpi.java | 6 +- .../ignite/spi/deployment/DeploymentSpi.java | 4 +- .../spi/discovery/DiscoveryMetricsProvider.java | 2 +- .../ignite/spi/discovery/DiscoverySpi.java | 8 +- .../spi/discovery/DiscoverySpiDataExchange.java | 2 +- .../spi/discovery/tcp/TcpDiscoverySpi.java | 30 +- .../discovery/tcp/TcpDiscoverySpiAdapter.java | 2 +- .../tcp/internal/TcpDiscoveryNode.java | 6 +- .../ipfinder/jdbc/TcpDiscoveryJdbcIpFinder.java | 6 +- .../spi/eventstorage/EventStorageSpi.java | 4 +- .../memory/MemoryEventStorageSpi.java | 4 +- .../apache/ignite/spi/failover/FailoverSpi.java | 4 +- .../spi/failover/always/AlwaysFailoverSpi.java | 2 +- .../jobstealing/JobStealingFailoverSpi.java | 14 +- .../spi/failover/never/NeverFailoverSpi.java | 2 +- .../ignite/spi/indexing/GridIndexingSpi.java | 2 +- .../spi/loadbalancing/LoadBalancingSpi.java | 4 +- .../adaptive/AdaptiveCpuLoadProbe.java | 6 +- .../adaptive/AdaptiveJobCountLoadProbe.java | 6 +- .../adaptive/AdaptiveLoadBalancingSpi.java | 4 +- .../adaptive/AdaptiveLoadProbe.java | 2 +- .../AdaptiveProcessingTimeLoadProbe.java | 6 +- .../roundrobin/RoundRobinLoadBalancingSpi.java | 2 +- .../WeightedRandomLoadBalancingSpi.java | 2 +- .../spi/securesession/SecureSessionSpi.java | 6 +- .../noop/NoopSecureSessionSpi.java | 6 +- .../ignite/spi/swapspace/SwapSpaceSpi.java | 6 +- .../spi/swapspace/file/FileSwapSpaceSpi.java | 4 +- .../ignite/startup/BasicWarmupClosure.java | 2 +- .../ignite/startup/cmdline/AboutDialog.java | 2 +- .../startup/cmdline/CommandLineStartup.java | 10 +- .../startup/cmdline/CommandLineTransformer.java | 4 +- .../org/apache/ignite/startup/package-info.java | 2 +- .../ignite/streamer/StreamerConfiguration.java | 10 +- .../apache/ignite/streamer/StreamerWindow.java | 2 +- .../org/apache/ignite/thread/IgniteThread.java | 2 +- .../apache/ignite/transactions/IgniteTx.java | 4 +- .../spring-cache-client-benchmark-1.xml | 8 +- .../spring-cache-client-benchmark-2.xml | 8 +- .../spring-cache-client-benchmark-3.xml | 8 +- modules/core/src/test/config/example-cache.xml | 2 +- modules/core/src/test/config/ggfs-shmem.xml | 8 +- .../src/test/config/load/cache-benchmark.xml | 2 +- .../test/config/load/cache-client-benchmark.xml | 2 +- .../config/load/dsi-49-server-production.xml | 2 +- .../src/test/config/load/merge-sort-base.xml | 8 +- modules/core/src/test/config/log4j-test.xml | 8 +- .../core/src/test/config/spring-cache-load.xml | 8 +- .../config/spring-cache-put-remove-load.xml | 2 +- .../core/src/test/config/spring-cache-swap.xml | 2 +- .../src/test/config/spring-cache-teststore.xml | 4 +- .../core/src/test/config/spring-multicache.xml | 8 +- .../src/test/config/spring-start-nodes-attr.xml | 2 +- .../core/src/test/config/spring-start-nodes.xml | 2 +- .../average/spring-streamer-average-base.xml | 8 +- .../average/spring-streamer-average-local.xml | 8 +- .../average/spring-streamer-average-random.xml | 8 +- .../config/streamer/spring-streamer-base.xml | 8 +- .../internal/GridAffinityP2PSelfTest.java | 4 +- .../GridFailoverTaskWithPredicateSelfTest.java | 2 +- .../ignite/internal/GridHomePathSelfTest.java | 4 +- .../GridNodeVisorAttributesSelfTest.java | 4 +- .../internal/GridReleaseTypeSelfTest.java | 4 +- .../apache/ignite/internal/GridStartupMain.java | 8 +- .../apache/ignite/internal/GridStartupTest.java | 8 +- .../GridTaskCancelSingleNodeSelfTest.java | 2 - .../GridTopologyBuildVersionSelfTest.java | 8 +- .../internal/GridUpdateNotifierSelfTest.java | 2 +- .../communication/GridIoManagerSelfTest.java | 4 +- .../GridCacheConcurrentTxMultiNodeTest.java | 2 +- .../cache/GridCacheP2PUndeploySelfTest.java | 2 +- .../GridCacheQueryInternalKeysSelfTest.java | 2 +- .../GridCacheMultiNodeDataStructureTest.java | 2 +- .../GridCacheQueueCleanupSelfTest.java | 2 +- .../dht/GridCacheAtomicNearCacheSelfTest.java | 2 +- .../dht/GridCacheDhtPreloadDelayedSelfTest.java | 3 - .../GridCacheDhtPreloadMessageCountTest.java | 4 - .../dht/GridCacheDhtPreloadPutGetSelfTest.java | 4 - ...unctionExcludeNeighborsAbstractSelfTest.java | 4 +- ...idCacheNearOnlyMultiNodeFullApiSelfTest.java | 2 +- .../GridCacheDistributedEvictionsSelfTest.java | 2 - .../continuous/GridEventConsumeSelfTest.java | 4 +- .../apache/ignite/internal/updatestatus.html | 4 +- ...artupWithSpecifiedWorkDirectorySelfTest.java | 8 +- ...tartupWithUndefinedGridGainHomeSelfTest.java | 106 - ...dStartupWithUndefinedIgniteHomeSelfTest.java | 106 + .../internal/util/IgniteUtilsSelfTest.java | 6 +- .../ipc/shmem/GgfsSharedMemoryTestServer.java | 2 +- .../IpcSharedMemoryCrashDetectionSelfTest.java | 2 +- .../jvmtest/ServerSocketMultiThreadedTest.java | 4 +- .../apache/ignite/lang/GridFuncSelfTest.java | 4 +- .../loadtest/GridSingleExecutionTest.java | 6 +- .../cache/GridCacheAbstractLoadTest.java | 10 +- .../loadtests/cache/GridCacheBenchmark.java | 8 +- .../cache/GridCacheGroupLockComparisonTest.java | 12 +- .../capacity/spring-capacity-cache.xml | 8 +- .../loadtests/colocation/spring-colocation.xml | 8 +- .../communication/GridIoManagerBenchmark.java | 2 +- .../GridTcpCommunicationBenchmark.java | 12 +- .../GridSingleSplitsRedeployLoadTest.java | 2 +- .../loadtests/discovery/GridGcTimeoutTest.java | 2 +- .../cacheget/GridBenchmarkCacheGetLoadTest.java | 2 +- .../ignite/loadtests/job/GridJobLoadTest.java | 4 +- .../loadtests/mapper/GridNodeStartup.java | 8 +- .../loadtests/nio/GridNioBenchmarkTest.java | 2 +- .../streamer/GridStreamerBenchmark.java | 2 +- .../ignite/logger/java/GridJavaLoggerTest.java | 65 - .../logger/java/IgniteJavaLoggerTest.java | 65 + .../GridOptimizedMarshallerEnumSelfTest.java | 62 - .../GridOptimizedMarshallerSelfTest.java | 452 ---- .../optimized/GridOptimizedMarshallerTest.java | 830 ------- .../GridOptimizedObjectStreamSelfTest.java | 2093 ------------------ .../GridTestTcpDiscoveryIpFinderAdapter.java | 44 - .../OptimizedMarshallerEnumSelfTest.java | 62 + .../optimized/OptimizedMarshallerSelfTest.java | 452 ++++ .../optimized/OptimizedMarshallerTest.java | 830 +++++++ .../OptimizedObjectStreamSelfTest.java | 2093 ++++++++++++++++++ .../TestTcpDiscoveryIpFinderAdapter.java | 44 + .../cache/CacheCheckpointSpiConfigSelfTest.java | 34 + .../CacheCheckpointSpiSecondCacheSelfTest.java | 106 + .../cache/CacheCheckpointSpiSelfTest.java | 29 + .../CacheCheckpointSpiStartStopSelfTest.java | 34 + .../GridCacheCheckpointSpiConfigSelfTest.java | 34 - ...idCacheCheckpointSpiSecondCacheSelfTest.java | 106 - .../cache/GridCacheCheckpointSpiSelfTest.java | 29 - ...GridCacheCheckpointSpiStartStopSelfTest.java | 34 - .../GridJdbcCheckpointSpiConfigSelfTest.java | 77 - ...idJdbcCheckpointSpiCustomConfigSelfTest.java | 47 - ...dJdbcCheckpointSpiDefaultConfigSelfTest.java | 45 - .../GridJdbcCheckpointSpiStartStopSelfTest.java | 47 - .../jdbc/JdbcCheckpointSpiConfigSelfTest.java | 77 + .../JdbcCheckpointSpiCustomConfigSelfTest.java | 47 + .../JdbcCheckpointSpiDefaultConfigSelfTest.java | 45 + .../JdbcCheckpointSpiStartStopSelfTest.java | 47 + ...redFsCheckpointSpiMultiThreadedSelfTest.java | 2 +- ...bStealingCollisionSpiAttributesSelfTest.java | 2 +- ...alingCollisionSpiCustomTopologySelfTest.java | 2 +- .../GridJobStealingCollisionSpiSelfTest.java | 2 +- ...obStealingCollisionSpiStartStopSelfTest.java | 2 +- .../GridAbstractCommunicationSelfTest.java | 4 +- ...cpCommunicationSpiMultithreadedSelfTest.java | 4 +- .../AbstractDiscoveryRandomStartStopTest.java | 213 ++ .../discovery/AbstractDiscoverySelfTest.java | 496 +++++ .../spi/discovery/AbstractDiscoveryTest.java | 153 ++ ...ridAbstractDiscoveryRandomStartStopTest.java | 213 -- .../GridAbstractDiscoverySelfTest.java | 496 ----- .../discovery/GridAbstractDiscoveryTest.java | 153 -- .../tcp/GridTcpClientDiscoverySelfTest.java | 691 ------ .../GridTcpDiscoveryConcurrentStartTest.java | 118 - ...GridTcpDiscoveryMarshallerCheckSelfTest.java | 102 - .../tcp/GridTcpDiscoveryMultiThreadedTest.java | 206 -- .../discovery/tcp/GridTcpDiscoverySelfTest.java | 990 --------- .../GridTcpDiscoverySnapshotHistoryTest.java | 174 -- .../tcp/GridTcpDiscoverySpiConfigSelfTest.java | 45 - .../GridTcpDiscoverySpiRandomStartStopTest.java | 45 - .../tcp/GridTcpDiscoverySpiSelfTest.java | 43 - .../GridTcpDiscoverySpiStartStopSelfTest.java | 82 - .../GridTcpDiscoverySpiWildcardSelfTest.java | 63 - .../tcp/TcpClientDiscoverySelfTest.java | 691 ++++++ .../tcp/TcpDiscoveryConcurrentStartTest.java | 118 + .../TcpDiscoveryMarshallerCheckSelfTest.java | 102 + .../tcp/TcpDiscoveryMultiThreadedTest.java | 206 ++ .../spi/discovery/tcp/TcpDiscoverySelfTest.java | 990 +++++++++ .../tcp/TcpDiscoverySnapshotHistoryTest.java | 174 ++ .../tcp/TcpDiscoverySpiConfigSelfTest.java | 45 + .../tcp/TcpDiscoverySpiRandomStartStopTest.java | 45 + .../discovery/tcp/TcpDiscoverySpiSelfTest.java | 43 + .../tcp/TcpDiscoverySpiStartStopSelfTest.java | 82 + .../tcp/TcpDiscoverySpiWildcardSelfTest.java | 63 + ...ridTcpDiscoveryIpFinderAbstractSelfTest.java | 125 -- .../TcpDiscoveryIpFinderAbstractSelfTest.java | 125 ++ .../GridTcpDiscoveryJdbcIpFinderSelfTest.java | 90 - .../jdbc/TcpDiscoveryJdbcIpFinderSelfTest.java | 90 + ...idTcpDiscoveryMulticastIpFinderSelfTest.java | 115 - .../TcpDiscoveryMulticastIpFinderSelfTest.java | 115 + ...ridTcpDiscoverySharedFsIpFinderSelfTest.java | 56 - .../TcpDiscoverySharedFsIpFinderSelfTest.java | 56 + .../vm/GridTcpDiscoveryVmIpFinderSelfTest.java | 193 -- .../vm/TcpDiscoveryVmIpFinderSelfTest.java | 193 ++ ...idJobStealingFailoverSpiOneNodeSelfTest.java | 4 +- .../GridJobStealingFailoverSpiSelfTest.java | 2 +- ...JobStealingFailoverSpiStartStopSelfTest.java | 2 +- .../GridSwapSpaceSpiAbstractSelfTest.java | 2 +- .../startup/GridRandomCommandLineLoader.java | 10 +- .../ignite/startup/GridVmNodesStarter.java | 2 +- .../cmdline/GridCommandLineLoaderTest.java | 2 +- .../GridCommandLineTransformerSelfTest.java | 4 +- .../startup/servlet/GridServletLoaderTest.java | 12 +- .../ignite/testframework/GridTestNode.java | 4 +- .../ignite/testframework/GridTestUtils.java | 36 +- .../config/GridTestProperties.java | 2 +- .../testframework/junits/GridAbstractTest.java | 19 +- .../ignite/testframework/junits/IgniteMock.java | 2 +- .../junits/IgniteTestResources.java | 10 +- .../junits/common/GridAbstractExamplesTest.java | 2 +- .../junits/common/GridCommonAbstractTest.java | 2 +- .../junits/logger/GridTestLog4jLogger.java | 12 +- .../junits/spi/GridSpiAbstractTest.java | 4 +- .../IgniteCacheDataStructuresSelfTestSuite.java | 2 +- .../IgniteCacheFailoverTestSuite.java | 2 +- .../IgniteCacheWriteBehindTestSuite.java | 2 +- .../IgniteContinuousTaskSelfTestSuite.java | 2 +- .../ignite/testsuites/IgniteFsTestSuite.java | 2 +- .../IgniteJobMetricsSelfTestSuite.java | 2 +- .../testsuites/IgniteKernalSelfTestSuite.java | 2 +- .../testsuites/IgniteLangSelfTestSuite.java | 2 +- .../testsuites/IgniteLoggingSelfTestSuite.java | 2 +- .../IgniteMarshallerSelfTestSuite.java | 8 +- .../IgniteSpiCheckpointSelfTestSuite.java | 16 +- .../IgniteSpiDiscoverySelfTestSuite.java | 20 +- .../IgniteSpiEventStorageSelfTestSuite.java | 2 +- .../testsuites/IgniteUtilSelfTestSuite.java | 2 +- .../util/GridConcurrentLinkedDequeSelfTest.java | 2 - .../util/GridTopologyHeapSizeSelfTest.java | 2 +- .../src/test/resources/load/html/index.html | 26 +- .../core/src/test/webapp/META-INF/gg-config.xml | 18 +- modules/core/src/test/webapp/WEB-INF/web.xml | 4 +- modules/extdata/p2p/META-INF/gridgain.xml | 40 - modules/extdata/p2p/META-INF/ignite.xml | 40 + .../uri/tasks/GridUriDeploymentDependency1.java | 2 +- .../uri/tasks/GridUriDeploymentDependency2.java | 2 +- .../uri/tasks/GridUriDeploymentTestTask2.java | 2 +- .../client/hadoop/GridHadoopClientProtocol.java | 4 +- .../GridHadoopClientProtocolProvider.java | 6 +- .../apache/ignite/client/hadoop/package.html | 2 +- .../fs/hadoop/GridGgfsHadoopParameters.java | 2 +- .../fs/hadoop/v1/GridGgfsHadoopFileSystem.java | 12 +- .../org/apache/ignite/fs/hadoop/v1/package.html | 2 +- .../fs/hadoop/v2/GridGgfsHadoopFileSystem.java | 12 +- .../org/apache/ignite/fs/hadoop/v2/package.html | 2 +- .../hadoop/GridGgfsHadoopFileSystemWrapper.java | 2 +- .../hadoop/GridHadoopClassLoader.java | 2 +- .../processors/hadoop/GridHadoopSetup.java | 56 +- .../GridHadoopExternalTaskExecutor.java | 2 +- .../child/GridHadoopExternalProcessStarter.java | 4 +- .../apache/ignite/fs/GridFileSystemLoad.java | 4 +- ...dGgfsHadoop20FileSystemAbstractSelfTest.java | 2 +- .../fs/GridGgfsHadoopDualAbstractSelfTest.java | 2 +- ...ridGgfsHadoopFileSystemAbstractSelfTest.java | 6 +- ...ridGgfsHadoopFileSystemIpcCacheSelfTest.java | 2 +- .../GridGgfsHadoopFileSystemLoggerSelfTest.java | 2 +- ...GgfsHadoopFileSystemLoggerStateSelfTest.java | 6 +- ...fsHadoopFileSystemSecondaryModeSelfTest.java | 2 +- .../fs/GridGgfsNearOnlyMultiNodeSelfTest.java | 2 +- .../ignite/fs/IgniteFsEventsTestSuite.java | 2 +- .../hadoop/GridHadoopCommandLineTest.java | 4 +- .../hadoop/GridHadoopPopularWordsTest.java | 6 +- .../loadtests/ggfs/GridGgfsNodeStartup.java | 6 +- .../ggfs/GridGgfsPerformanceBenchmark.java | 2 +- .../IgniteFsLinuxAndMacOSTestSuite.java | 4 +- .../GridHibernateCollectionRegion.java | 2 +- .../hibernate/GridHibernateEntityRegion.java | 2 +- .../GridHibernateNonStrictAccessStrategy.java | 2 +- .../GridHibernateQueryResultsRegion.java | 2 +- .../GridHibernateReadOnlyAccessStrategy.java | 2 +- .../GridHibernateReadWriteAccessStrategy.java | 2 +- .../hibernate/GridHibernateRegionFactory.java | 10 +- ...ridHibernateTransactionalAccessStrategy.java | 2 +- .../GridHibernateTransactionalDataRegion.java | 6 +- .../apache/ignite/cache/hibernate/package.html | 4 +- .../hibernate/CacheHibernateBlobStore.java | 2 +- .../CacheHibernateBlobStoreEntry.hbm.xml | 2 +- .../CacheHibernateBlobStoreSelfTest.java | 8 +- ...idCachePartitionedHitsAndMissesSelfTest.java | 2 +- .../apache/ignite/logger/jcl/GridJclLogger.java | 170 -- .../ignite/logger/jcl/IgniteJclLogger.java | 170 ++ .../ignite/logger/jcl/GridJclLoggerTest.java | 48 - .../ignite/logger/jcl/IgniteJclLoggerTest.java | 48 + .../ignite/testsuites/IgniteJclTestSuite.java | 2 +- .../ignite/logger/log4j/IgniteLog4jLogger.java | 12 +- .../log4j/GridLog4jCorrectFileNameTest.java | 2 +- .../logger/log4j/GridLog4jLoggingFileTest.java | 2 +- .../logger/log4j/GridLog4jLoggingUrlTest.java | 2 +- .../http/jetty/GridJettyRestProtocol.java | 8 +- .../rest/protocols/http/jetty/rest.html | 18 +- modules/scalar/pom.xml | 8 +- .../ignite/scalar/ScalarConversions.scala | 2 +- .../org/apache/ignite/scalar/pimps/Packet.scala | 2 +- .../ignite/scalar/pimps/ScalarCachePimp.scala | 2 +- .../pimps/ScalarCacheProjectionPimp.scala | 4 +- .../ignite/scalar/pimps/ScalarGridPimp.scala | 2 +- .../scalar/pimps/ScalarProjectionPimp.scala | 10 +- .../scala/org/apache/ignite/scalar/scalar.scala | 14 +- .../test/resources/spring-ping-pong-partner.xml | 4 +- .../ignite/logger/slf4j/GridSlf4jLogger.java | 4 +- .../java/org/apache/ignite/IgniteSpring.java | 2 +- .../org/apache/ignite/IgniteSpringBean.java | 2 +- .../ignite/cache/spring/SpringCacheManager.java | 16 +- .../cache/spring/SpringDynamicCacheManager.java | 8 +- .../spring/IgniteSpringProcessorImpl.java | 4 +- .../ignite/internal/GridFactorySelfTest.java | 8 +- .../resource/GridResourceProcessorSelfTest.java | 2 +- .../p2p/GridP2PUserVersionChangeSelfTest.java | 12 +- .../testsuites/IgniteResourceSelfTestSuite.java | 2 +- .../internal/IgniteNodeStartUtilsSelfTest.java | 2 +- ...gniteProjectionStartStopRestartSelfTest.java | 58 +- .../ignite/tools/javadoc/IgniteLinkTaglet.java | 6 +- .../optimized/OptimizedClassNamesGenerator.java | 8 +- .../util/antgar/IgniteDeploymentGarAntTask.java | 10 +- .../spi/deployment/uri/UriDeploymentSpi.java | 28 +- .../GridTaskUriDeploymentDeadlockSelfTest.java | 2 +- .../ignite/p2p/GridP2PDisabledSelfTest.java | 2 +- ...loymentClassLoaderMultiThreadedSelfTest.java | 4 +- .../GridUriDeploymentClassLoaderSelfTest.java | 2 +- ...riDeploymentClassloaderRegisterSelfTest.java | 2 +- .../GridUriDeploymentFileProcessorSelfTest.java | 14 +- .../GridUriDeploymentMultiScannersSelfTest.java | 2 +- .../uri/GridUriDeploymentSimpleSelfTest.java | 2 +- .../META-INF/bad-signed-deployfile-gridgain.xml | 39 - .../META-INF/bad-signed-deployfile-ignite.xml | 39 + .../spi/deployment/uri/META-INF/bad_classes.xml | 2 +- .../META-INF/deploy-with-resources-gridgain.xml | 37 - .../META-INF/deploy-with-resources-ignite.xml | 37 + .../uri/META-INF/deploydepend-gridgain.xml | 37 - .../uri/META-INF/deploydepend-ignite.xml | 37 + .../uri/META-INF/deploydir-gridgain.xml | 38 - .../uri/META-INF/deploydir-ignite.xml | 38 + .../uri/META-INF/deployfile-gridgain.xml | 38 - .../uri/META-INF/deployfile-ignite.xml | 38 + .../deployment/uri/META-INF/gridgain.brokenxml | 18 - .../spi/deployment/uri/META-INF/gridgain.empty | 0 .../deployment/uri/META-INF/gridgain.incorrefs | 18 - .../spi/deployment/uri/META-INF/gridgain.xml | 38 - .../deployment/uri/META-INF/ignite.brokenxml | 18 + .../spi/deployment/uri/META-INF/ignite.empty | 0 .../deployment/uri/META-INF/ignite.incorrefs | 18 + .../spi/deployment/uri/META-INF/ignite.xml | 38 + .../deployment/uri/META-INF/p2p-gridgain.xml | 42 - .../spi/deployment/uri/META-INF/p2p-ignite.xml | 42 + .../well-signed-deployfile-gridgain.xml | 38 - .../META-INF/well-signed-deployfile-ignite.xml | 38 + .../GridFileDeploymentUndeploySelfTest.java | 2 +- .../http/GridHttpDeploymentSelfTest.java | 2 +- .../apache/ignite/tools/GridToolsSelfTest.java | 16 +- .../ignite/tools/gartask/META-INF/gridgain.xml | 38 - .../ignite/tools/gartask/META-INF/ignite.xml | 38 + modules/visor-console/pom.xml | 4 +- .../scala/org/apache/ignite/visor/Packet.scala | 4 +- .../ignite/visor/commands/VisorConsole.scala | 2 +- .../commands/alert/VisorAlertCommand.scala | 6 +- .../config/VisorConfigurationCommand.scala | 2 +- .../ignite/visor/commands/disco/Packet.scala | 6 +- .../commands/disco/VisorDiscoveryCommand.scala | 12 +- .../ignite/visor/commands/events/Packet.scala | 6 +- .../commands/events/VisorEventsCommand.scala | 12 +- .../visor/commands/kill/VisorKillCommand.scala | 4 +- .../visor/commands/node/VisorNodeCommand.scala | 4 +- .../ignite/visor/commands/start/Packet.scala | 8 +- .../commands/start/VisorStartCommand.scala | 16 +- .../ignite/visor/commands/tasks/Packet.scala | 6 +- .../commands/tasks/VisorTasksCommand.scala | 12 +- .../commands/top/VisorTopologyCommand.scala | 4 +- .../visor/commands/vvm/VisorVvmCommand.scala | 4 +- .../scala/org/apache/ignite/visor/visor.scala | 38 +- modules/visor-plugins/pom.xml | 4 +- .../cache/websession/GridWebSessionFilter.java | 8 +- .../IgniteServletContextListenerStartup.java | 20 +- .../startup/servlet/IgniteServletStartup.java | 26 +- .../internal/websession/WebSessionSelfTest.java | 2 +- .../websession/WebSessionServerStart.java | 2 +- .../config/benchmark-atomic-win.properties | 2 +- .../config/benchmark-atomic.properties | 2 +- .../config/benchmark-compute-win.properties | 2 +- .../config/benchmark-compute.properties | 2 +- .../config/benchmark-query-win.properties | 2 +- .../yardstick/config/benchmark-query.properties | 4 +- .../config/benchmark-tx-win.properties | 2 +- .../yardstick/config/benchmark-tx.properties | 2 +- .../yardstick/config/benchmark-win.properties | 2 +- modules/yardstick/config/benchmark.properties | 2 +- .../org/apache/ignite/yardstick/IgniteNode.java | 4 +- .../cache/IgniteGetOffHeapBenchmark.java | 2 +- .../cache/IgniteGetOffHeapValuesBenchmark.java | 2 +- .../cache/IgnitePutGetOffHeapBenchmark.java | 2 +- .../IgnitePutGetOffHeapValuesBenchmark.java | 2 +- .../cache/IgnitePutGetTxOffHeapBenchmark.java | 2 +- .../IgnitePutGetTxOffHeapValuesBenchmark.java | 2 +- .../cache/IgnitePutOffHeapBenchmark.java | 2 +- .../cache/IgnitePutOffHeapValuesBenchmark.java | 2 +- .../cache/IgnitePutTxOffHeapBenchmark.java | 2 +- .../IgnitePutTxOffHeapValuesBenchmark.java | 2 +- .../IgniteSqlQueryJoinOffHeapBenchmark.java | 2 +- .../cache/IgniteSqlQueryOffHeapBenchmark.java | 2 +- .../IgniteSqlQueryPutOffHeapBenchmark.java | 2 +- 630 files changed, 10549 insertions(+), 10617 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/core/src/main/java/org/apache/ignite/IgniteCluster.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/apache/ignite/IgniteCluster.java index 0350487,45ada5f..800693d --- a/modules/core/src/main/java/org/apache/ignite/IgniteCluster.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteCluster.java @@@ -232,10 -232,10 +232,10 @@@ public interface IgniteCluster extends * </td> * </tr> * <tr> - * <td><b>ggHome</b></td> + * <td><b>igniteHome</b></td> * <td>String</td> * <td> - * Path to GridGain installation folder. If not defined, IGNITE_HOME + * Path to Ignite installation folder. If not defined, IGNITE_HOME * environment variable must be set on remote hosts. * </td> * </tr> http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/core/src/main/java/org/apache/ignite/IgniteCompute.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/core/src/main/java/org/apache/ignite/marshaller/optimized/IgniteOptimizedObjectInputStream.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/scalar/src/main/scala/org/apache/ignite/scalar/ScalarConversions.scala ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteNodeStartUtilsSelfTest.java ---------------------------------------------------------------------- diff --cc modules/ssh/src/test/java/org/apache/ignite/internal/IgniteNodeStartUtilsSelfTest.java index 46a64c5,0000000..c21f0b1 mode 100644,000000..100644 --- a/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteNodeStartUtilsSelfTest.java +++ b/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteNodeStartUtilsSelfTest.java @@@ -1,88 -1,0 +1,88 @@@ +/* + * 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. + */ + +package org.apache.ignite.internal; + +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.ignite.testframework.junits.common.*; + +import java.io.*; +import java.util.*; + +import static org.apache.ignite.internal.util.nodestart.IgniteNodeStartUtils.*; + +/** + * Tests for {@link org.apache.ignite.internal.util.nodestart.IgniteNodeStartUtils}. + */ +public class IgniteNodeStartUtilsSelfTest extends GridCommonAbstractTest { + /** + * @throws Exception If failed. + */ + public void testParseFile() throws Exception { - File file = U.resolveGridGainPath("modules/core/src/test/config/start-nodes.ini"); ++ File file = U.resolveIgnitePath("modules/core/src/test/config/start-nodes.ini"); + + IgniteBiTuple<Collection<Map<String, Object>>, Map<String, Object>> t = parseFile(file); + + assert t != null; + + Collection<Map<String, Object>> hosts = t.get1(); + + assert hosts != null; + assert hosts.size() == 2; + + for (Map<String, Object> host : hosts) { + assert host != null; + + assert "192.168.1.1".equals(host.get(HOST)) || "192.168.1.2".equals(host.get(HOST)); + + if ("192.168.1.1".equals(host.get(HOST))) { + assert (Integer)host.get(PORT) == 1; + assert "uname1".equals(host.get(UNAME)); + assert "passwd1".equals(host.get(PASSWD)); + assert new File("key1").equals(host.get(KEY)); + assert (Integer)host.get(NODES) == 1; + assert "ggHome1".equals(host.get(IGNITE_HOME)); + assert "cfg1".equals(host.get(CFG)); + assert "script1".equals(host.get(SCRIPT)); + } + else if ("192.168.1.2".equals(host.get(HOST))) { + assert (Integer)host.get(PORT) == 2; + assert "uname2".equals(host.get(UNAME)); + assert "passwd2".equals(host.get(PASSWD)); + assert new File("key2").equals(host.get(KEY)); + assert (Integer)host.get(NODES) == 2; + assert "ggHome2".equals(host.get(IGNITE_HOME)); + assert "cfg2".equals(host.get(CFG)); + assert "script2".equals(host.get(SCRIPT)); + } + } + + Map<String, Object> dflts = t.get2(); + + assert dflts != null; + + assert (Integer)dflts.get(PORT) == 3; + assert "uname3".equals(dflts.get(UNAME)); + assert "passwd3".equals(dflts.get(PASSWD)); + assert new File("key3").equals(dflts.get(KEY)); + assert (Integer)dflts.get(NODES) == 3; + assert "ggHome3".equals(dflts.get(IGNITE_HOME)); + assert "cfg3".equals(dflts.get(CFG)); + assert "script3".equals(dflts.get(SCRIPT)); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteProjectionStartStopRestartSelfTest.java ---------------------------------------------------------------------- diff --cc modules/ssh/src/test/java/org/apache/ignite/internal/IgniteProjectionStartStopRestartSelfTest.java index 0e9ee8a,0000000..45642b4 mode 100644,000000..100644 --- a/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteProjectionStartStopRestartSelfTest.java +++ b/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteProjectionStartStopRestartSelfTest.java @@@ -1,1032 -1,0 +1,1032 @@@ +/* + * 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. + */ + +package org.apache.ignite.internal; + +import org.apache.ignite.*; +import org.apache.ignite.cluster.*; +import org.apache.ignite.events.*; +import org.apache.ignite.internal.util.lang.*; +import org.apache.ignite.internal.util.nodestart.*; +import org.apache.ignite.internal.util.typedef.*; +import org.apache.ignite.internal.util.typedef.internal.*; +import org.apache.ignite.lang.*; +import org.apache.ignite.testframework.junits.common.*; +import org.jetbrains.annotations.*; + +import java.io.*; +import java.nio.file.*; +import java.util.*; +import java.util.concurrent.*; +import java.util.concurrent.atomic.*; + +import static java.util.concurrent.TimeUnit.*; +import static org.apache.ignite.events.IgniteEventType.*; +import static org.apache.ignite.internal.util.nodestart.IgniteNodeStartUtils.*; + +/** + * Tests for {@code startNodes(..)}, {@code stopNodes(..)} + * and {@code restartNodes(..)} methods. + * <p> + * {@code tests.properties} file must specify username ({@code ssh.username} property) + * and one (and only one) of password ({@code ssh.password} property) or + * private key path ({@code ssh.key} property). + */ +@SuppressWarnings("ConstantConditions") +public class IgniteProjectionStartStopRestartSelfTest extends GridCommonAbstractTest { + /** */ + private static final String SSH_UNAME = System.getenv("test.ssh.username"); + + /** */ + private static final String SSH_PWD = System.getenv("test.ssh.password"); + + /** */ + private static final String SSH_KEY = System.getenv("ssh.key"); + + /** */ + private static final String CUSTOM_SCRIPT_WIN = "modules/core/src/test/bin/start-nodes-custom.bat"; + + /** */ + private static final String CUSTOM_SCRIPT_LINUX = "modules/core/src/test/bin/start-nodes-custom.sh"; + + /** */ + private static final String CFG_NO_ATTR = "modules/core/src/test/config/spring-start-nodes.xml"; + + /** */ + private static final String CFG_ATTR = "modules/core/src/test/config/spring-start-nodes-attr.xml"; + + /** */ + private static final String CUSTOM_CFG_ATTR_KEY = "grid.node.ssh.started"; + + /** */ + private static final String CUSTOM_CFG_ATTR_VAL = "true"; + + /** */ + private static final long WAIT_TIMEOUT = 40 * 1000; + + /** */ + private String pwd; + + /** */ + private File key; + + /** */ + private Ignite ignite; + + /** */ + private static final String HOST = "127.0.0.1"; + + /** */ + private final AtomicInteger joinedCnt = new AtomicInteger(); + + /** */ + private final AtomicInteger leftCnt = new AtomicInteger(); + + /** */ + private volatile CountDownLatch joinedLatch; + + /** */ + private volatile CountDownLatch leftLatch; + + /** {@inheritDoc} */ + @Override protected void beforeTest() throws Exception { + if (SSH_KEY != null) { + key = new File(SSH_KEY); + + assert key.exists() : "Private key doesn't exist: " + key.getAbsolutePath(); + assert key.isFile() : "Private key is not a file: " + key.getAbsolutePath(); + } + else + pwd = SSH_PWD; + + log.info("Username: " + SSH_UNAME); + log.info("Password: " + pwd); + log.info("Key path: " + key); + + G.setDaemon(true); + + ignite = G.start(CFG_NO_ATTR); + + G.setDaemon(false); + + ignite.events().localListen(new IgnitePredicate<IgniteEvent>() { + @Override public boolean apply(IgniteEvent evt) { + info("Received event: " + evt.shortDisplay()); + + if (evt.type() == EVT_NODE_JOINED) { + joinedCnt.incrementAndGet(); + + if (joinedLatch != null) + joinedLatch.countDown(); + } else if (evt.type() == EVT_NODE_LEFT) { + leftCnt.incrementAndGet(); + + if (leftLatch != null) + leftLatch.countDown(); + } + + return true; + } + }, EVT_NODE_JOINED, EVT_NODE_LEFT); + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + if (!ignite.cluster().nodes().isEmpty()) { + leftLatch = new CountDownLatch(ignite.cluster().nodes().size()); + + ignite.cluster().stopNodes(); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + } + + boolean wasEmpty = ignite.cluster().nodes().isEmpty(); + + G.stop(true); + + joinedCnt.set(0); + leftCnt.set(0); + + joinedLatch = null; + leftLatch = null; + + assert wasEmpty : "grid.isEmpty() returned false after all nodes were stopped [nodes=" + ignite.cluster().nodes() + ']'; + } + + /** {@inheritDoc} */ + @Override protected long getTestTimeout() { + return 90 * 1000; + } + + /** + * @throws Exception If failed. + */ + public void testStartOneNode() throws Exception { + joinedLatch = new CountDownLatch(1); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 1, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 1, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 1; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 1; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 1; + } + + /** + * @throws Exception If failed. + */ + public void testStartThreeNodes() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, DFLT_TIMEOUT, 1); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testStartThreeNodesAndDoEmptyCall() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + + res = startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.isEmpty(); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testStartThreeNodesAndTryToStartOneNode() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + + res = startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 1, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 1, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.isEmpty(); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testStartFiveNodesInTwoCalls() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(2); + + res = startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 5, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 5, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 2; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 5; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 5; + } + + /** + * @throws Exception If failed. + */ + public void testStartFiveWithTwoSpecs() throws Exception { + joinedLatch = new CountDownLatch(5); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - F.asList(map(HOST, SSH_UNAME, pwd, key, 2, U.getGridGainHome(), CFG_NO_ATTR, null), - map(HOST, SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null)), ++ F.asList(map(HOST, SSH_UNAME, pwd, key, 2, U.getIgniteHome(), CFG_NO_ATTR, null), ++ map(HOST, SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null)), + null, false, 0, 16); + + assert res.size() == 5; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 5; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 5; + } + + /** + * @throws Exception If failed. + */ + public void testStartThreeNodesAndRestart() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 3; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(3); + leftLatch = new CountDownLatch(3); + + res = startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, true, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 6; + assert leftCnt.get() == 3; + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testCustomScript() throws Exception { + joinedLatch = new CountDownLatch(1); + + String script = U.isWindows() ? CUSTOM_SCRIPT_WIN : CUSTOM_SCRIPT_LINUX; + - script = Paths.get(U.getGridGainHome()).relativize(U.resolveGridGainPath(script).toPath()).toString(); ++ script = Paths.get(U.getIgniteHome()).relativize(U.resolveIgnitePath(script).toPath()).toString(); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 1, U.getGridGainHome(), null, script), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 1, U.getIgniteHome(), null, script), + null, false, 0, 16); + + assert res.size() == 1; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert joinedCnt.get() == 1; + assert leftCnt.get() == 0; + + assert ignite.cluster().nodes().size() == 1; + + assert CUSTOM_CFG_ATTR_VAL.equals(F.first(ignite.cluster().nodes()).<String>attribute(CUSTOM_CFG_ATTR_KEY)); + } + + /** + * @throws Exception If failed. + */ + public void testStopNodes() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, null, 3, U.getGridGainHome(), CFG_NO_ATTR, ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, null, 3, U.getIgniteHome(), CFG_NO_ATTR, + null), null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + leftLatch = new CountDownLatch(3); + + ignite.cluster().stopNodes(); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().isEmpty(); + } + + /** + * @throws Exception If failed. + */ + public void testStopNodesFiltered() throws Exception { + joinedLatch = new CountDownLatch(2); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 2, U.getGridGainHome(), CFG_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 2, U.getIgniteHome(), CFG_ATTR, null), + null, false, 0, 16); + + assert res.size() == 2; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + joinedLatch = new CountDownLatch(1); + + res = startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 1; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + leftLatch = new CountDownLatch(2); + + Collection<UUID> ids = F.transform(ignite.cluster().forAttribute(CUSTOM_CFG_ATTR_KEY, CUSTOM_CFG_ATTR_VAL).nodes(), + new IgniteClosure<ClusterNode, UUID>() { + @Override public UUID apply(ClusterNode node) { + return node.id(); + } + }); + + ignite.cluster().forAttribute(CUSTOM_CFG_ATTR_KEY, CUSTOM_CFG_ATTR_VAL).nodes(); + + ignite.cluster().stopNodes(ids); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 1; + } + + /** + * @throws Exception If failed. + */ + public void testStopNodeById() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + leftLatch = new CountDownLatch(1); + + ignite.cluster().stopNodes(Collections.singleton(F.first(ignite.cluster().forRemotes().nodes()).id())); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 2; + } + + /** + * @throws Exception If failed. + */ + public void testStopNodesByIds() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + leftLatch = new CountDownLatch(2); + + Iterator<ClusterNode> it = ignite.cluster().nodes().iterator(); + + Collection<UUID> ids = new HashSet<>(); + + ids.add(it.next().id()); + ids.add(it.next().id()); + + ignite.cluster().stopNodes(ids); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 1; + } + + /** + * @throws Exception If failed. + */ + public void testStopNodesByIdsC() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + leftLatch = new CountDownLatch(2); + + Iterator<ClusterNode> it = ignite.cluster().nodes().iterator(); + + ignite.cluster().stopNodes(F.asList(it.next().id(), it.next().id())); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 1; + } + + /** + * @throws Exception If failed. + */ + public void testRestartNodes() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(3); + leftLatch = new CountDownLatch(3); + + ignite.cluster().restartNodes(); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testRestartNodesFiltered() throws Exception { + joinedLatch = new CountDownLatch(2); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 2, U.getGridGainHome(), CFG_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 2, U.getIgniteHome(), CFG_ATTR, null), + null, false, 0, 16); + + assert res.size() == 2; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + joinedLatch = new CountDownLatch(1); + + res = startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 1; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(2); + leftLatch = new CountDownLatch(2); + + X.println("Restarting nodes with " + CUSTOM_CFG_ATTR_KEY); + + Collection<UUID> ids = F.transform(ignite.cluster().forAttribute(CUSTOM_CFG_ATTR_KEY, CUSTOM_CFG_ATTR_VAL).nodes(), + new IgniteClosure<ClusterNode, UUID>() { + @Override public UUID apply(ClusterNode node) { + return node.id(); + } + } + ); + + ignite.cluster().restartNodes(ids); + + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testRestartNodeById() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(1); + leftLatch = new CountDownLatch(1); + + ignite.cluster().restartNodes(Collections.singleton(F.first(ignite.cluster().forRemotes().nodes()).id())); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testRestartNodesByIds() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(2); + leftLatch = new CountDownLatch(2); + + Iterator<ClusterNode> it = ignite.cluster().nodes().iterator(); + + ignite.cluster().restartNodes(F.asList(it.next().id(), it.next().id())); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @throws Exception If failed. + */ + public void testRestartNodesByIdsC() throws Exception { + joinedLatch = new CountDownLatch(3); + + Collection<GridTuple3<String, Boolean, String>> res = + startNodes(ignite.cluster(), - maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getGridGainHome(), CFG_NO_ATTR, null), ++ maps(Collections.singleton(HOST), SSH_UNAME, pwd, key, 3, U.getIgniteHome(), CFG_NO_ATTR, null), + null, false, 0, 16); + + assert res.size() == 3; + + F.forEach(res, new CI1<GridTuple3<String, Boolean, String>>() { + @Override public void apply(GridTuple3<String, Boolean, String> t) { + assert t.get1().equals(HOST); + + if (!t.get2()) + throw new IgniteException(t.get3()); + } + }); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + + joinedLatch = new CountDownLatch(2); + leftLatch = new CountDownLatch(2); + + Iterator<ClusterNode> it = ignite.cluster().nodes().iterator(); + + ignite.cluster().restartNodes(F.asList(it.next().id(), it.next().id())); + + assert joinedLatch.await(WAIT_TIMEOUT, MILLISECONDS); + assert leftLatch.await(WAIT_TIMEOUT, MILLISECONDS); + + assert ignite.cluster().nodes().size() == 3; + } + + /** + * @param host Hostname. + * @param uname Username. + * @param passwd Password. + * @param key Private key file. + * @param nodes Number of nodes. - * @param igniteHome GridGain home. ++ * @param igniteHome Ignite home. + * @param cfg Configuration file path. + * @param script Startup script path. + * @return Parameters map. + */ + private Map<String, Object> map( + String host, + @Nullable String uname, + @Nullable String passwd, + @Nullable File key, + @Nullable Integer nodes, + @Nullable String igniteHome, + @Nullable String cfg, + @Nullable String script) { + assert host != null; + + Map<String, Object> params = new HashMap<>(); + + params.put(IgniteNodeStartUtils.HOST, host); + params.put(UNAME, uname); + params.put(PASSWD, passwd); + params.put(KEY, key); + params.put(NODES, nodes); + params.put(IGNITE_HOME, igniteHome); + params.put(CFG, cfg); + params.put(SCRIPT, script); + + return params; + } + + /** + * @param hosts Hostnames. + * @param uname Username. + * @param passwd Password. + * @param key Private key file. + * @param nodes Number of nodes. - * @param igniteHome GridGain home. ++ * @param igniteHome Ignite home. + * @param cfg Configuration file path. + * @param script Startup script path. + * @return Parameters map. + */ + private Collection<Map<String, Object>> maps( + Collection<String> hosts, + @Nullable String uname, + @Nullable String passwd, + @Nullable File key, + @Nullable Integer nodes, + @Nullable String igniteHome, + @Nullable String cfg, + @Nullable String script) { + assert HOST != null; + + Collection<Map<String, Object>> maps = new ArrayList<>(hosts.size()); + + for (String host : hosts) { + Map<String, Object> params = new HashMap<>(); + + params.put(IgniteNodeStartUtils.HOST, host); + params.put(UNAME, uname); + params.put(PASSWD, passwd); + params.put(KEY, key); + params.put(NODES, nodes); + params.put(IGNITE_HOME, igniteHome); + params.put(CFG, cfg); + params.put(SCRIPT, script); + + maps.add(params); + } + + return maps; + } + + /** + * @param name Filename. + * @return Whether name belongs to log file. + */ + private boolean isSshNodeLogName(String name) { - return name.matches("gridgain.[0-9a-z-]+.log"); ++ return name.matches("ignite.[0-9a-z-]+.log"); + } + + /** + * @param cluster Cluster. + * @param hosts Hosts. + * @param dflts Default. + * @param restart Restart flag. + * @param timeout Timeout. + * @param maxConn Maximum connections. + * @return Results collection. + * @throws IgniteCheckedException If failed. + */ + private Collection<GridTuple3<String, Boolean, String>> startNodes(IgniteCluster cluster, + Collection<Map<String, Object>> hosts, + @Nullable Map<String, Object> dflts, + boolean restart, + int timeout, + int maxConn) throws IgniteCheckedException { + cluster = cluster.withAsync(); + + assertNull(cluster.startNodes(hosts, dflts, restart, timeout, maxConn)); + + return cluster.<Collection<GridTuple3<String, Boolean, String>>>future().get(WAIT_TIMEOUT); + } +} http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/22c8fea5/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/start/VisorStartCommand.scala ----------------------------------------------------------------------