package eu.dnetlib.iis.common.report;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import java.util.List;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import com.google.common.collect.ImmutableMap;
import eu.dnetlib.iis.common.java.PortBindings;
import eu.dnetlib.iis.common.schemas.ReportEntry;
import eu.dnetlib.iis.common.schemas.ReportEntryType;
import eu.dnetlib.iis.common.utils.AvroTestUtils;
/**
* @author madryk
*/
public class ReportGeneratorTest {
private ReportGenerator reportGenerator = new ReportGenerator();
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
//------------------------ TESTS --------------------------
@Test
public void run() throws Exception {
// given
Path outputDirPath = new Path(tempFolder.getRoot().getPath());
PortBindings portBindings = new PortBindings(ImmutableMap.of(), ImmutableMap.of("report", outputDirPath));
Configuration conf = new Configuration(false);
Map<String, String> parameters = ImmutableMap.of(
"report.group.firstParam", "11",
"report.group.secondParam", "22",
"notReportPrefixed.group.thirdParam", "3123");
// execute
reportGenerator.run(portBindings, conf, parameters);
// assert
List<ReportEntry> actualReportEntries = AvroTestUtils.readLocalAvroDataStore(tempFolder.getRoot().getPath());
assertThat(actualReportEntries, containsInAnyOrder(
new ReportEntry("group.firstParam", ReportEntryType.COUNTER, "11"),
new ReportEntry("group.secondParam", ReportEntryType.COUNTER, "22")));
}
}