blob: 8057ee01804c638e0fc773b462f6a77b46ee2fe2 [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.unomi.itests;
import org.apache.unomi.api.Profile;
import org.apache.unomi.api.services.ProfileService;
import org.apache.unomi.router.api.ExportConfiguration;
import org.apache.unomi.router.api.RouterConstants;
import org.apache.unomi.router.api.services.ImportExportConfigurationService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.ops4j.pax.exam.junit.PaxExam;
import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
import org.ops4j.pax.exam.spi.reactors.PerSuite;
import org.ops4j.pax.exam.util.Filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import java.io.File;
import java.util.*;
/**
* Created by amidani on 14/08/2017.
*/
@RunWith(PaxExam.class)
@ExamReactorStrategy(PerSuite.class)
public class ProfileExportIT extends BaseIT {
private Logger logger = LoggerFactory.getLogger(ProfileExportIT.class);
@Inject @Filter(value="(configDiscriminator=EXPORT)", timeout = 600000)
protected ImportExportConfigurationService<ExportConfiguration> exportConfigurationService;
@Inject @Filter(timeout = 600000)
protected ProfileService profileService;
@Test
public void testExport() throws InterruptedException {
Date timestamp = new Date();
Set<String> segments = new TreeSet<>();
segments.add("exportItSeg");
Profile profile1 = new Profile(UUID.randomUUID().toString());
profile1.setProperty("firstVisit", timestamp);
profile1.setProperty("firstName", "Pablo");
profile1.setProperty("lastName", "Esco");
profile1.setProperty("city", "exportCity");
profile1.setSegments(segments);
profileService.save(profile1);
Profile profile2 = new Profile(UUID.randomUUID().toString());
profile2.setProperty("firstVisit", timestamp);
profile2.setProperty("firstName", "Amado");
profile2.setProperty("lastName", "Carri");
profile2.setProperty("city", "exportCity");
profile2.setSegments(segments);
profileService.save(profile2);
Profile profile3 = new Profile(UUID.randomUUID().toString());
profile3.setProperty("firstVisit", timestamp);
profile3.setProperty("firstName", "Joaquin");
profile3.setProperty("lastName", "Guz");
profile3.setProperty("city", "exportCity");
profile3.setSegments(segments);
profileService.save(profile3);
keepTrying("Failed waiting for the creation of the profiles for the export test", ()-> profileService.findProfilesByPropertyValue("segments", "exportItSeg", 0, 10, null), (p)->p.getTotalSize() == 3, 1000, 100);
/*** Export Test ***/
String itemId = "export-test";
ExportConfiguration exportConfiguration = new ExportConfiguration();
exportConfiguration.setItemId(itemId);
exportConfiguration.setConfigType(RouterConstants.IMPORT_EXPORT_CONFIG_TYPE_RECURRENT);
exportConfiguration.setColumnSeparator(";");
exportConfiguration.setMultiValueDelimiter("()");
exportConfiguration.setMultiValueSeparator(";");
Map<String, String> mapping = new HashMap<>();
mapping.put("0", "firstName");
mapping.put("1", "lastName");
mapping.put("2", "city");
exportConfiguration.getProperties().put("mapping", mapping);
exportConfiguration.getProperties().put("segment", "exportItSeg");
exportConfiguration.getProperties().put("period", "1m");
File exportDir = new File("data/tmp/");
exportConfiguration.getProperties().put("destination", "file://" + exportDir.getAbsolutePath() + "?fileName=profiles-export.csv");
exportConfiguration.setActive(true);
exportConfigurationService.save(exportConfiguration, true);
final File exportResult = new File("data/tmp/profiles-export.csv");
keepTrying("Failed waiting for export file to be created", ()-> exportResult, File::exists, 1000, 100);
logger.info("PATH : {}", exportResult.getAbsolutePath());
Assert.assertTrue(exportResult.exists());
List<ExportConfiguration> exportConfigurations = exportConfigurationService.getAll();
Assert.assertEquals(1, exportConfigurations.size());
exportConfigurationService.delete(itemId);
}
}