List of usage examples for org.apache.hadoop.conf Configuration setStrings
public void setStrings(String name, String... values)
name
property as as comma delimited values. From source file:org.apache.sqoop.mapreduce.MySQLExportJob.java
License:Apache License
@Override /**/*from w w w . j a v a2 s.c om*/ * Configure the inputformat to use for the job. */ protected void configureInputFormat(Job job, String tableName, String tableClassName, String splitByCol) throws ClassNotFoundException, IOException { // Configure the delimiters, etc. Configuration conf = job.getConfiguration(); conf.setInt(MySQLUtils.OUTPUT_FIELD_DELIM_KEY, options.getOutputFieldDelim()); conf.setInt(MySQLUtils.OUTPUT_RECORD_DELIM_KEY, options.getOutputRecordDelim()); conf.setInt(MySQLUtils.OUTPUT_ENCLOSED_BY_KEY, options.getOutputEnclosedBy()); conf.setInt(MySQLUtils.OUTPUT_ESCAPED_BY_KEY, options.getOutputEscapedBy()); conf.setBoolean(MySQLUtils.OUTPUT_ENCLOSE_REQUIRED_KEY, options.isOutputEncloseRequired()); String[] extraArgs = options.getExtraArgs(); if (null != extraArgs) { conf.setStrings(MySQLUtils.EXTRA_ARGS_KEY, extraArgs); } ConnManager mgr = context.getConnManager(); String username = options.getUsername(); if (null == username || username.length() == 0) { DBConfiguration.configureDB(job.getConfiguration(), mgr.getDriverClass(), options.getConnectString(), options.getConnectionParams()); } else { DBConfiguration.configureDB(job.getConfiguration(), mgr.getDriverClass(), options.getConnectString(), username, options.getPassword(), options.getConnectionParams()); } String[] colNames = options.getColumns(); if (null == colNames) { colNames = mgr.getColumnNames(tableName); } String[] sqlColNames = null; if (null != colNames) { sqlColNames = new String[colNames.length]; for (int i = 0; i < colNames.length; i++) { sqlColNames[i] = mgr.escapeColName(colNames[i]); } } // Note that mysqldump also does *not* want a quoted table name. DataDrivenDBInputFormat.setInput(job, DBWritable.class, tableName, null, null, sqlColNames); // Configure the actual InputFormat to use. super.configureInputFormat(job, tableName, tableClassName, splitByCol); }
From source file:org.apache.sqoop.mapreduce.odps.HdfsOdpsImportJob.java
License:Apache License
@Override protected void configureOutputFormat(Job job, String tableName, String tableClassName) throws ClassNotFoundException { job.setOutputFormatClass(getOutputFormatClass()); Configuration conf = job.getConfiguration(); conf.setClass("sqoop.output.delegate.field.map.processor.class", OdpsUploadProcessor.class, FieldMapProcessor.class); conf.setStrings(OdpsConstants.INPUT_COL_NAMES, options.getColumns()); String odpsTableName = options.getOdpsTable(); if (odpsTableName == null) { odpsTableName = tableName;//from w w w. java 2s .c o m } conf.set(OdpsConstants.TABLE_NAME, odpsTableName); conf.set(OdpsConstants.ACCESS_ID, options.getOdpsAccessID()); conf.set(OdpsConstants.ACCESS_KEY, options.getOdpsAccessKey()); conf.set(OdpsConstants.ENDPOINT, options.getOdpsEndPoint()); String tunnelEndPoint = options.getOdpsTunnelEndPoint(); if (tunnelEndPoint != null) { conf.set(OdpsConstants.TUNNEL_ENDPOINT, options.getOdpsTunnelEndPoint()); } conf.set(OdpsConstants.PROJECT, options.getOdpsProject()); String partitionKey = options.getOdpsPartitionKey(); String partitionValue = options.getOdpsPartitionValue(); if (partitionKey != null && partitionValue != null) { conf.set(OdpsConstants.PARTITION_KEY, partitionKey); conf.set(OdpsConstants.PARTITION_VALUE, partitionValue); } conf.setBoolean(OdpsConstants.CREATE_TABLE, options.isOdpsCreateTable()); String dateFormat = options.getOdpsInputDateFormat(); if (dateFormat != null) { conf.set(OdpsConstants.DATE_FORMAT, dateFormat); } conf.setInt(OdpsConstants.RETRY_COUNT, options.getOdpsRetryCount()); conf.setInt(OdpsConstants.BATCH_SIZE, options.getOdpsBatchSize()); conf.setBoolean(OdpsConstants.USE_COMPRESS_IN_UPLOAD, options.isOdpsUseCompressInUpload()); job.getConfiguration().set(ExportJobBase.SQOOP_EXPORT_TABLE_CLASS_KEY, tableClassName); }
From source file:org.apache.sqoop.mapreduce.odps.OdpsImportJob.java
License:Apache License
@Override protected void configureOutputFormat(Job job, String tableName, String tableClassName) throws ClassNotFoundException { job.setOutputFormatClass(getOutputFormatClass()); Configuration conf = job.getConfiguration(); conf.setClass("sqoop.output.delegate.field.map.processor.class", OdpsUploadProcessor.class, FieldMapProcessor.class); conf.setStrings(OdpsConstants.INPUT_COL_NAMES, getColumnNames()); String odpsTableName = options.getOdpsTable(); if (odpsTableName == null) { odpsTableName = tableName;//from w w w. j a v a2s. com } conf.set(OdpsConstants.TABLE_NAME, odpsTableName); conf.set(OdpsConstants.ACCESS_ID, options.getOdpsAccessID()); conf.set(OdpsConstants.ACCESS_KEY, options.getOdpsAccessKey()); conf.set(OdpsConstants.ENDPOINT, options.getOdpsEndPoint()); String tunnelEndPoint = options.getOdpsTunnelEndPoint(); if (tunnelEndPoint != null) { conf.set(OdpsConstants.TUNNEL_ENDPOINT, options.getOdpsTunnelEndPoint()); } conf.set(OdpsConstants.PROJECT, options.getOdpsProject()); String partitionKey = options.getOdpsPartitionKey(); String partitionValue = options.getOdpsPartitionValue(); if (partitionKey != null && partitionValue != null) { conf.set(OdpsConstants.PARTITION_KEY, partitionKey); conf.set(OdpsConstants.PARTITION_VALUE, partitionValue); } conf.setBoolean(OdpsConstants.CREATE_TABLE, options.isOdpsCreateTable()); String dateFormat = options.getOdpsInputDateFormat(); if (dateFormat != null) { conf.set(OdpsConstants.DATE_FORMAT, dateFormat); } conf.setInt(OdpsConstants.RETRY_COUNT, options.getOdpsRetryCount()); conf.setInt(OdpsConstants.BATCH_SIZE, options.getOdpsBatchSize()); }
From source file:org.apache.tajo.MiniTajoYarnCluster.java
License:Apache License
@Override public void init(Configuration conf) { conf.setSocketAddr(YarnConfiguration.RM_ADDRESS, new InetSocketAddress("127.0.0.1", 0)); conf.setSocketAddr(YarnConfiguration.RM_SCHEDULER_ADDRESS, new InetSocketAddress("127.0.0.1", 0)); conf.set(MRConfig.FRAMEWORK_NAME, MRConfig.YARN_FRAMEWORK_NAME); if (conf.get(MRJobConfig.MR_AM_STAGING_DIR) == null) { conf.set(MRJobConfig.MR_AM_STAGING_DIR, new File(getTestWorkDir(), "apps_staging_dir/").getAbsolutePath()); }//w w w . j a v a 2 s .c om conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "000"); try { Path stagingPath = FileContext.getFileContext(conf) .makeQualified(new Path(conf.get(MRJobConfig.MR_AM_STAGING_DIR))); FileContext fc = FileContext.getFileContext(stagingPath.toUri(), conf); if (fc.util().exists(stagingPath)) { LOG.info(stagingPath + " exists! deleting..."); fc.delete(stagingPath, true); } LOG.info("mkdir: " + stagingPath); //mkdir the staging directory so that right permissions are set while running as proxy user fc.mkdir(stagingPath, null, true); //mkdir done directory as well String doneDir = JobHistoryUtils.getConfiguredHistoryServerDoneDirPrefix(conf); Path doneDirPath = fc.makeQualified(new Path(doneDir)); fc.mkdir(doneDirPath, null, true); } catch (IOException e) { throw new YarnRuntimeException("Could not create staging directory. ", e); } conf.set(MRConfig.MASTER_ADDRESS, "test"); // The default is local because of // which shuffle doesn't happen //configure the shuffle service in NM conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, PullServerAuxService.PULLSERVER_SERVICEID); conf.setClass( String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, PullServerAuxService.PULLSERVER_SERVICEID), PullServerAuxService.class, Service.class); // Non-standard shuffle port conf.setInt(TajoConf.ConfVars.PULLSERVER_PORT.name(), 0); // local directory conf.set(TajoConf.ConfVars.WORKER_TEMPORAL_DIR.name(), "/tmp/tajo-localdir"); conf.setClass(YarnConfiguration.NM_CONTAINER_EXECUTOR, DefaultContainerExecutor.class, ContainerExecutor.class); // TestMRJobs is for testing non-uberized operation only; see TestUberAM // for corresponding uberized tests. conf.setBoolean(MRJobConfig.JOB_UBERTASK_ENABLE, false); conf.setInt("yarn.nodemanager.delete.debug-delay-sec", 600); super.init(conf); }
From source file:org.apache.tez.mapreduce.common.TestMRInputAMSplitGenerator.java
License:Apache License
private void testGroupSplitsAndSortSplits(boolean groupSplitsEnabled, boolean sortSplitsEnabled) throws Exception { Configuration conf = new Configuration(); String[] splitLengths = new String[50]; for (int i = 0; i < splitLengths.length; i++) { splitLengths[i] = Integer.toString(1000 * (i + 1)); }/*from w w w . j a v a 2 s .co m*/ conf.setStrings(SPLITS_LENGTHS, splitLengths); DataSourceDescriptor dataSource = MRInput.createConfigBuilder(conf, InputFormatForTest.class) .groupSplits(groupSplitsEnabled).sortSplits(sortSplitsEnabled).build(); UserPayload userPayload = dataSource.getInputDescriptor().getUserPayload(); InputInitializerContext context = new TezTestUtils.TezRootInputInitializerContextForTest(userPayload); MRInputAMSplitGenerator splitGenerator = new MRInputAMSplitGenerator(context); List<Event> events = splitGenerator.initialize(); assertTrue(events.get(0) instanceof InputConfigureVertexTasksEvent); boolean shuffled = false; InputSplit previousIs = null; int numRawInputSplits = 0; for (int i = 1; i < events.size(); i++) { assertTrue(events.get(i) instanceof InputDataInformationEvent); InputDataInformationEvent diEvent = (InputDataInformationEvent) (events.get(i)); assertNull(diEvent.getDeserializedUserPayload()); assertNotNull(diEvent.getUserPayload()); MRSplitProto eventProto = MRSplitProto.parseFrom(ByteString.copyFrom(diEvent.getUserPayload())); InputSplit is = MRInputUtils.getNewSplitDetailsFromEvent(eventProto, new Configuration()); if (groupSplitsEnabled) { numRawInputSplits += ((TezGroupedSplit) is).getGroupedSplits().size(); for (InputSplit inputSplit : ((TezGroupedSplit) is).getGroupedSplits()) { assertTrue(inputSplit instanceof InputSplitForTest); } assertTrue(((TezGroupedSplit) is).getGroupedSplits().get(0) instanceof InputSplitForTest); } else { numRawInputSplits++; assertTrue(is instanceof InputSplitForTest); } // The splits in the list returned from InputFormat has ascending // size in order. // If sortSplitsEnabled is true, MRInputAMSplitGenerator will sort the // splits in descending order. // If sortSplitsEnabled is false, MRInputAMSplitGenerator will shuffle // the splits. if (previousIs != null) { if (sortSplitsEnabled) { assertTrue(is.getLength() <= previousIs.getLength()); } else { shuffled |= (is.getLength() > previousIs.getLength()); } } previousIs = is; } assertEquals(splitLengths.length, numRawInputSplits); if (!sortSplitsEnabled) { assertTrue(shuffled); } }
From source file:org.apache.tez.mapreduce.MiniMRRTezCluster.java
License:Apache License
@Override public void serviceInit(Configuration conf) throws Exception { conf.set(MRConfig.FRAMEWORK_NAME, MRConfig.YARN_TEZ_FRAMEWORK_NAME); if (conf.get(MRJobConfig.MR_AM_STAGING_DIR) == null) { conf.set(MRJobConfig.MR_AM_STAGING_DIR, new File(getTestWorkDir(), "apps_staging_dir" + Path.SEPARATOR).getAbsolutePath()); }/*from w ww .ja v a 2 s. c o m*/ // VMEM monitoring disabled, PMEM monitoring enabled. conf.setBoolean(YarnConfiguration.NM_PMEM_CHECK_ENABLED, false); conf.setBoolean(YarnConfiguration.NM_VMEM_CHECK_ENABLED, false); conf.set(CommonConfigurationKeys.FS_PERMISSIONS_UMASK_KEY, "000"); try { Path stagingPath = FileContext.getFileContext(conf) .makeQualified(new Path(conf.get(MRJobConfig.MR_AM_STAGING_DIR))); FileContext fc = FileContext.getFileContext(stagingPath.toUri(), conf); if (fc.util().exists(stagingPath)) { LOG.info(stagingPath + " exists! deleting..."); fc.delete(stagingPath, true); } LOG.info("mkdir: " + stagingPath); fc.mkdir(stagingPath, null, true); //mkdir done directory as well String doneDir = JobHistoryUtils.getConfiguredHistoryServerDoneDirPrefix(conf); Path doneDirPath = fc.makeQualified(new Path(doneDir)); fc.mkdir(doneDirPath, null, true); } catch (IOException e) { throw new TezUncheckedException("Could not create staging directory. ", e); } conf.set(MRConfig.MASTER_ADDRESS, "test"); //configure the shuffle service in NM conf.setStrings(YarnConfiguration.NM_AUX_SERVICES, new String[] { ShuffleHandler.MAPREDUCE_SHUFFLE_SERVICEID }); conf.setClass( String.format(YarnConfiguration.NM_AUX_SERVICE_FMT, ShuffleHandler.MAPREDUCE_SHUFFLE_SERVICEID), ShuffleHandler.class, Service.class); // Non-standard shuffle port conf.setInt(ShuffleHandler.SHUFFLE_PORT_CONFIG_KEY, 0); conf.setClass(YarnConfiguration.NM_CONTAINER_EXECUTOR, DefaultContainerExecutor.class, ContainerExecutor.class); // TestMRJobs is for testing non-uberized operation only; see TestUberAM // for corresponding uberized tests. conf.setBoolean(MRJobConfig.JOB_UBERTASK_ENABLE, false); super.serviceInit(conf); }
From source file:org.apache.tez.mapreduce.processor.MapUtils.java
License:Apache License
public static void configureLocalDirs(Configuration conf, String localDir) throws IOException { String[] localSysDirs = new String[1]; localSysDirs[0] = localDir;/*from w w w .j a va2 s. co m*/ conf.setStrings(TezRuntimeFrameworkConfigs.LOCAL_DIRS, localSysDirs); conf.set(MRFrameworkConfigs.TASK_LOCAL_RESOURCE_DIR, localDir); LOG.info(TezRuntimeFrameworkConfigs.LOCAL_DIRS + " for child: " + conf.get(TezRuntimeFrameworkConfigs.LOCAL_DIRS)); LOG.info(MRFrameworkConfigs.TASK_LOCAL_RESOURCE_DIR + " for child: " + conf.get(MRFrameworkConfigs.TASK_LOCAL_RESOURCE_DIR)); LocalDirAllocator lDirAlloc = new LocalDirAllocator(TezRuntimeFrameworkConfigs.LOCAL_DIRS); Path workDir = null; // First, try to find the JOB_LOCAL_DIR on this host. try { workDir = lDirAlloc.getLocalPathToRead("work", conf); } catch (DiskErrorException e) { // DiskErrorException means dir not found. If not found, it will // be created below. } if (workDir == null) { // JOB_LOCAL_DIR doesn't exist on this host -- Create it. workDir = lDirAlloc.getLocalPathForWrite("work", conf); FileSystem lfs = FileSystem.getLocal(conf).getRaw(); boolean madeDir = false; try { madeDir = lfs.mkdirs(workDir); } catch (FileAlreadyExistsException e) { // Since all tasks will be running in their own JVM, the race condition // exists where multiple tasks could be trying to create this directory // at the same time. If this task loses the race, it's okay because // the directory already exists. madeDir = true; workDir = lDirAlloc.getLocalPathToRead("work", conf); } if (!madeDir) { throw new IOException("Mkdirs failed to create " + workDir.toString()); } } conf.set(MRFrameworkConfigs.JOB_LOCAL_DIR, workDir.toString()); }
From source file:org.apache.tez.runtime.common.resources.TestWeightedScalingMemoryDistributor.java
License:Apache License
@Test(timeout = 5000) public void testSimpleWeightedScaling() { Configuration conf = new Configuration(this.conf); conf.setStrings(TezConfiguration.TEZ_TASK_SCALE_MEMORY_WEIGHTED_RATIOS, WeightedScalingMemoryDistributor.generateWeightStrings(0, 1, 2, 3, 1, 1)); System.err.println(Joiner.on(",") .join(conf.getStringCollection(TezConfiguration.TEZ_TASK_SCALE_MEMORY_WEIGHTED_RATIOS))); MemoryDistributor dist = new MemoryDistributor(2, 2, conf); dist.setJvmMemory(10000l);//from www . ja v a 2 s . co m // First request - ScatterGatherShuffleInput MemoryUpdateCallbackForTest e1Callback = new MemoryUpdateCallbackForTest(); InputContext e1InputContext1 = createTestInputContext(); InputDescriptor e1InDesc1 = createTestInputDescriptor(OrderedGroupedKVInput.class); dist.requestMemory(10000, e1Callback, e1InputContext1, e1InDesc1); // Second request - BroadcastInput MemoryUpdateCallbackForTest e2Callback = new MemoryUpdateCallbackForTest(); InputContext e2InputContext2 = createTestInputContext(); InputDescriptor e2InDesc2 = createTestInputDescriptor(UnorderedKVInput.class); dist.requestMemory(10000, e2Callback, e2InputContext2, e2InDesc2); // Third request - randomOutput (simulates MROutput) MemoryUpdateCallbackForTest e3Callback = new MemoryUpdateCallbackForTest(); OutputContext e3OutputContext1 = createTestOutputContext(); OutputDescriptor e3OutDesc1 = createTestOutputDescriptor(); dist.requestMemory(10000, e3Callback, e3OutputContext1, e3OutDesc1); // Fourth request - OnFileSortedOutput MemoryUpdateCallbackForTest e4Callback = new MemoryUpdateCallbackForTest(); OutputContext e4OutputContext2 = createTestOutputContext(); OutputDescriptor e4OutDesc2 = createTestOutputDescriptor(OrderedPartitionedKVOutput.class); dist.requestMemory(10000, e4Callback, e4OutputContext2, e4OutDesc2); dist.makeInitialAllocations(); // Total available: 70% of 10K = 7000 // 4 requests (weight) - 10K (3), 10K(1), 10K(1), 10K(2) // Scale down to - 3000, 1000, 1000, 2000 assertEquals(3000, e1Callback.assigned); assertEquals(1000, e2Callback.assigned); assertEquals(1000, e3Callback.assigned); assertEquals(2000, e4Callback.assigned); }
From source file:org.apache.tez.runtime.common.resources.TestWeightedScalingMemoryDistributor.java
License:Apache License
@Test(timeout = 5000) public void testAdditionalReserveFractionWeightedScaling() { Configuration conf = new Configuration(this.conf); conf.setStrings(TezConfiguration.TEZ_TASK_SCALE_MEMORY_WEIGHTED_RATIOS, WeightedScalingMemoryDistributor.generateWeightStrings(0, 2, 3, 6, 1, 1)); conf.setDouble(TezConfiguration.TEZ_TASK_SCALE_MEMORY_ADDITIONAL_RESERVATION_FRACTION_PER_IO, 0.025d); conf.setDouble(TezConfiguration.TEZ_TASK_SCALE_MEMORY_ADDITIONAL_RESERVATION_FRACTION_MAX, 0.2d); MemoryDistributor dist = new MemoryDistributor(2, 2, conf); dist.setJvmMemory(10000l);// ww w .java 2 s.c o m // First request - ScatterGatherShuffleInput [weight 6] MemoryUpdateCallbackForTest e1Callback = new MemoryUpdateCallbackForTest(); InputContext e1InputContext1 = createTestInputContext(); InputDescriptor e1InDesc1 = createTestInputDescriptor(OrderedGroupedKVInput.class); dist.requestMemory(10000, e1Callback, e1InputContext1, e1InDesc1); // Second request - BroadcastInput [weight 2] MemoryUpdateCallbackForTest e2Callback = new MemoryUpdateCallbackForTest(); InputContext e2InputContext2 = createTestInputContext(); InputDescriptor e2InDesc2 = createTestInputDescriptor(UnorderedKVInput.class); dist.requestMemory(10000, e2Callback, e2InputContext2, e2InDesc2); // Third request - randomOutput (simulates MROutput) [weight 1] MemoryUpdateCallbackForTest e3Callback = new MemoryUpdateCallbackForTest(); OutputContext e3OutputContext1 = createTestOutputContext(); OutputDescriptor e3OutDesc1 = createTestOutputDescriptor(); dist.requestMemory(10000, e3Callback, e3OutputContext1, e3OutDesc1); // Fourth request - OnFileSortedOutput [weight 3] MemoryUpdateCallbackForTest e4Callback = new MemoryUpdateCallbackForTest(); OutputContext e4OutputContext2 = createTestOutputContext(); OutputDescriptor e4OutDesc2 = createTestOutputDescriptor(OrderedPartitionedKVOutput.class); dist.requestMemory(10000, e4Callback, e4OutputContext2, e4OutDesc2); dist.makeInitialAllocations(); // Total available: 60% of 10K = 7000 // 4 requests (weight) - 10K (6), 10K(2), 10K(1), 10K(3) // Scale down to - 3000, 1000, 500, 1500 assertEquals(3000, e1Callback.assigned); assertEquals(1000, e2Callback.assigned); assertEquals(500, e3Callback.assigned); assertEquals(1500, e4Callback.assigned); }
From source file:org.apache.tez.runtime.library.broadcast.input.TestBroadcastInputManager.java
License:Apache License
@Test public void testInMemAllocation() throws IOException { String localDirs = "/tmp/" + this.getClass().getName(); Configuration conf = new Configuration(); long jvmMax = Runtime.getRuntime().maxMemory(); LOG.info("jvmMax: " + jvmMax); float bufferPercent = 0.1f; conf.setFloat(TezJobConfig.TEZ_RUNTIME_SHUFFLE_INPUT_BUFFER_PERCENT, bufferPercent); conf.setFloat(TezJobConfig.TEZ_RUNTIME_SHUFFLE_MEMORY_LIMIT_PERCENT, 1.0f); conf.setStrings(TezJobConfig.LOCAL_DIRS, localDirs); long inMemThreshold = (long) (bufferPercent * jvmMax); LOG.info("InMemThreshold: " + inMemThreshold); BroadcastInputManager inputManager = new BroadcastInputManager(UUID.randomUUID().toString(), conf); long requestSize = (long) (0.4f * inMemThreshold); long compressedSize = 1l; LOG.info("RequestSize: " + requestSize); FetchedInput fi1 = inputManager.allocate(requestSize, compressedSize, new InputAttemptIdentifier(1, 1)); assertEquals(FetchedInput.Type.MEMORY, fi1.getType()); FetchedInput fi2 = inputManager.allocate(requestSize, compressedSize, new InputAttemptIdentifier(2, 1)); assertEquals(FetchedInput.Type.MEMORY, fi2.getType()); // Over limit by this point. Next reserve should give back a DISK allocation FetchedInput fi3 = inputManager.allocate(requestSize, compressedSize, new InputAttemptIdentifier(3, 1)); assertEquals(FetchedInput.Type.DISK, fi3.getType()); // Freed one memory allocation. Next should be mem again. fi1.abort();//www . j a v a 2s .c o m fi1.free(); FetchedInput fi4 = inputManager.allocate(requestSize, compressedSize, new InputAttemptIdentifier(4, 1)); assertEquals(FetchedInput.Type.MEMORY, fi4.getType()); // Freed one disk allocation. Next sould be disk again (no mem freed) fi3.abort(); fi3.free(); FetchedInput fi5 = inputManager.allocate(requestSize, compressedSize, new InputAttemptIdentifier(4, 1)); assertEquals(FetchedInput.Type.DISK, fi5.getType()); }