blob: e535b2421bf7b4f837eb4467ef2f91a881d79b61 [file] [log] [blame]
/*
* 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.util;
import java.io.Serializable;
import java.util.Set;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.configuration.distributed.DistributedChangeableProperty;
import org.apache.ignite.internal.processors.configuration.distributed.SimpleDistributedProperty;
import org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_INVALID_ARGUMENTS;
import static org.apache.ignite.internal.commandline.CommandHandler.EXIT_CODE_OK;
import static org.apache.ignite.testframework.GridTestUtils.assertContains;
/**
* Checks command line property commands.
*/
public class GridCommandHandlerPropertiesTest extends GridCommandHandlerClusterByClassAbstractTest {
/** */
@Before
public void init() {
injectTestSystemOut();
}
/** */
@After
public void clear() {
}
/**
* Check the command '--property help'.
* Steps:
*/
@Test
public void testHelp() {
assertEquals(EXIT_CODE_OK, execute("--property", "help"));
String out = testOut.toString();
assertContains(log, out, "Print property command help:");
assertContains(log, out, "control.(sh|bat) --property help");
assertContains(log, out, "Print list of available properties:");
assertContains(log, out, "control.(sh|bat) --property list");
assertContains(log, out, "Get the property value:");
assertContains(log, out, "control.(sh|bat) --property get --name <property_name>");
assertContains(log, out, "Set the property value:");
assertContains(log, out, "control.(sh|bat) --property set --name <property_name> --val <property_value>");
}
/**
* Check the command '--property list'.
* Steps:
*/
@Test
public void testList() {
assertEquals(EXIT_CODE_OK, execute("--property", "list"));
String out = testOut.toString();
for (DistributedChangeableProperty<Serializable> pd : crd.context()
.distributedConfiguration().properties())
assertContains(log, out, pd.getName());
}
/**
* Check the command '--property get'.
* Steps:
*/
@Test
public void testGet() {
for (DistributedChangeableProperty<Serializable> pd : crd.context()
.distributedConfiguration().properties()) {
assertEquals(EXIT_CODE_OK, execute("--property", "get", "--name", pd.getName()));
String out = testOut.toString();
assertContains(log, out, pd.getName() + " = " + pd.get());
}
}
/**
* Check the set command fro property 'sql.disabledFunctions'.
* Steps:
*/
@Test
public void testPropertyDisabledSqlFunctions() {
assertEquals(
EXIT_CODE_OK,
execute(
"--property", "set",
"--name", "sql.disabledFunctions",
"--val", "LENGTH, SESSION_ID"
)
);
for (Ignite ign : G.allGrids()) {
Set<String> disabledFuncs = ((IgniteH2Indexing)((IgniteEx)ign).context().query().getIndexing())
.distributedConfiguration().disabledFunctions();
assertEquals(2, disabledFuncs.size());
assertTrue(disabledFuncs.contains("LENGTH"));
assertTrue(disabledFuncs.contains("SESSION_ID"));
}
}
/**
* Checks the set command for property 'checkpoint.deviation'.
*/
@Test
public void testPropertyCheckpointDeviation() {
for (Ignite ign : G.allGrids()) {
if (ign.configuration().isClientMode())
continue;
SimpleDistributedProperty<Integer> cpFreqDeviation = U.field(((IgniteEx)ign).context().cache().context().database(),
"cpFreqDeviation");
assertNull(cpFreqDeviation.get());
}
assertEquals(
EXIT_CODE_OK,
execute(
"--property", "set",
"--name", "checkpoint.deviation",
"--val", "20"
)
);
for (Ignite ign : G.allGrids()) {
if (ign.configuration().isClientMode())
continue;
SimpleDistributedProperty<Integer> cpFreqDeviation = U.field(((IgniteEx)ign).context().cache().context().database(),
"cpFreqDeviation");
assertNotNull(cpFreqDeviation.get());
assertEquals(20, cpFreqDeviation.get().intValue());
}
}
/**
* Check the set command fro property 'sql.defaultQueryTimeout'.
* Steps:
*/
@Test
public void testPropertyDefaultQueryTimeout() {
int dfltVal = ((IgniteH2Indexing)crd.context().query().getIndexing())
.distributedConfiguration().defaultQueryTimeout();
int newVal = dfltVal + 1000;
assertEquals(EXIT_CODE_OK, execute("--property", "set", "--name", "sql.defaultQueryTimeout", "--val",
Integer.toString(newVal)));
for (Ignite ign : G.allGrids()) {
assertEquals(
"Invalid default query timeout on node: " + ign.name(),
newVal,
((IgniteH2Indexing)((IgniteEx)ign).context().query().getIndexing())
.distributedConfiguration().defaultQueryTimeout()
);
}
assertEquals(
EXIT_CODE_INVALID_ARGUMENTS,
execute(
"--property", "set",
"--name", "sql.defaultQueryTimeout",
"--val", "invalidVal"
)
);
}
}