/*
* Copyright 2014 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.yarn.boot.properties;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.util.List;
import java.util.Properties;
import org.junit.Test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Configuration;
import org.springframework.yarn.boot.support.SpringYarnBootUtils;
public class SpringYarnClientLocalizerPropertiesTests {
@Test
public void testAllPropertiesSet() {
SpringApplication app = new SpringApplication(TestConfiguration.class);
app.setWebEnvironment(false);
ConfigurableApplicationContext context = app
.run(new String[] { "--spring.config.name=SpringYarnClientLocalizerPropertiesTests" });
SpringYarnClientLocalizerProperties properties = context.getBean(SpringYarnClientLocalizerProperties.class);
assertThat(properties, notNullValue());
List<String> pattern = properties.getPatterns();
assertThat(pattern, notNullValue());
assertThat(pattern.size(), is(2));
assertThat(pattern.get(0), is("patterns1Foo"));
assertThat(pattern.get(1), is("patterns2Foo"));
List<String> names = properties.getPropertiesNames();
assertThat(names, notNullValue());
assertThat(names.size(), is(2));
assertThat(names.get(0), is("name1Foo"));
assertThat(names.get(1), is("name2Foo"));
List<String> suffixes = properties.getPropertiesSuffixes();
assertThat(suffixes, notNullValue());
assertThat(suffixes.size(), is(2));
assertThat(suffixes.get(0), is("suffix1Foo"));
assertThat(suffixes.get(1), is("suffix2Foo"));
assertThat(properties.getZipPattern(), is("zipPatternFoo"));
context.close();
}
@Test
public void testRawFileContents() {
SpringApplicationBuilder builder = new SpringApplicationBuilder(TestConfiguration.class);
Properties p = new Properties();
p.put("spring.yarn.client.localizer.rawFileContents." + SpringYarnBootUtils.escapeConfigKey("file1"), new byte[1]);
p.put("spring.yarn.client.localizer.rawFileContents." + SpringYarnBootUtils.escapeConfigKey("file2"), new byte[2]);
p.put("spring.yarn.client.localizer.rawFileContents." + SpringYarnBootUtils.escapeConfigKey("application.properties"), new byte[3]);
builder.properties(p);
SpringApplication app = builder.application();
app.setWebEnvironment(false);
ConfigurableApplicationContext context = app.run(new String[0]);
SpringYarnClientLocalizerProperties properties = context.getBean(SpringYarnClientLocalizerProperties.class);
assertThat(properties, notNullValue());
assertThat(properties.getRawFileContents(), notNullValue());
assertThat(properties.getRawFileContents().size(), is(3));
assertThat(properties.getRawFileContents().get(SpringYarnBootUtils.escapeConfigKey("file1")).length, is(1));
assertThat(properties.getRawFileContents().get(SpringYarnBootUtils.escapeConfigKey("file2")).length, is(2));
assertThat(properties.getRawFileContents().get(SpringYarnBootUtils.escapeConfigKey("application.properties")).length, is(3));
}
@Configuration
@EnableConfigurationProperties({SpringYarnClientLocalizerProperties.class})
protected static class TestConfiguration {
}
}