Hello,

in the Commons VFS project we have a Provider for HDFS. This
Provider is unit-tested with the help of the excelent MiniDFSCluster
component.

A while back I enabled automated testing on Windows (cause it worked
for me), but I did not realize it only works with cygwin (namely
ls.exe) in the Path. This was some 1.2 version and it used the ls
command to read the owner.

We currently switch the dependency to 2.4.0 and had the hope that it better 
(i.e.
without binary dependencies) works in this scenario - as we want to run
the maven tests without pre-installing a tool chain on Windows.

However it got actually worse, it warns about a missing winutils.exe
and it requires the hadoop.dll. The first location where it fails is
testing writeability for the name node. And unlike all the comments in
FileUtil/NativeIO it does not cleanly fall back to java portable
methods.

I think the access/access0 method can easily be fixed, but before I work on 
this patch, does it make sense to go in this direction or will I have to fix 
some other, more complicated platform dependencies. My goal would be to start 
MiniDFSCluster inside surefire from maven without the need for complicated 
external toolchain setup.

Is actually anybody caring about making this possible?

org.apache.commons.vfs2.provider.hdfs.test.HdfsFileProviderTest  Time elapsed: 
2.291 sec  <<< ERROR!
java.lang.UnsatisfiedLinkError: 
org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
        at org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Native Method)
        at 
org.apache.hadoop.io.nativeio.NativeIO$Windows.access(NativeIO.java:570)
        at org.apache.hadoop.fs.FileUtil.canWrite(FileUtil.java:996)
        at 
org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:484)
        at 
org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:292)
        at 
org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
        at 
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:879)
        at 
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:638)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:455)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:511)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:670)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:655)
        at 
org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1304)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNode(MiniDFSCluster.java:975)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.createNameNodesAndSetConf(MiniDFSCluster.java:856)
        at 
org.apache.hadoop.hdfs.MiniDFSCluster.initMiniDFSCluster(MiniDFSCluster.java:702)
        at org.apache.hadoop.hdfs.MiniDFSCluster.<init>(MiniDFSCluster.java:640)
        at 
org.apache.commons.vfs2.provider.hdfs.test.HdfsFileProviderTest.<clinit>(HdfsFileProviderTest.java:95)

Greetings
Bernd

PS - in case you want to follow the VFS progress: 
* https://issues.apache.org/jira/browse/VFS-530 - tracks 2.4 migration
* https://issues.apache.org/jira/browse/VFS-529 - the broken windows tests
* https://issues.apache.org/jira/browse/VFS-526 - failed enable of win tests

Reply via email to