diff --git a/src/providers/wcs/qgswcscapabilities.cpp b/src/providers/wcs/qgswcscapabilities.cpp index 75de006da1a..e0a3c607c4b 100644 --- a/src/providers/wcs/qgswcscapabilities.cpp +++ b/src/providers/wcs/qgswcscapabilities.cpp @@ -229,7 +229,7 @@ bool QgsWcsCapabilities::retrieveServerCapabilities( ) // We prefer 1.0 because 1.1 has many issues, each server implements it in defferent // way with various particularities // It may happen that server supports 1.1.0 but gives error for 1.1 - versions << "VERSION=1.0.0" << "AcceptVersions=1.1.0,1.0.0"; + versions << "1.0.0" << "1.1.0,1.0.0"; } foreach ( QString v, versions ) diff --git a/tests/src/providers/testqgswcspublicservers.cpp b/tests/src/providers/testqgswcspublicservers.cpp index f553748c915..cf5ab99f4b8 100644 --- a/tests/src/providers/testqgswcspublicservers.cpp +++ b/tests/src/providers/testqgswcspublicservers.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -56,16 +57,29 @@ TestQgsWcsPublicServers::TestQgsWcsPublicServers( const QString & cacheDirPath, , mCoverage( coverage ) , mVersion( version ) , mForce( force ) + , mTimeout( 60000 ) { } +TestQgsWcsPublicServers::~TestQgsWcsPublicServers() +{ + QSettings settings; + settings.setValue( "/qgis/networkAndProxy/networkTimeout", mOrigTimeout ); +} + //runs before all tests void TestQgsWcsPublicServers::init() { // init QGIS's paths - true means that all path will be inited from prefix QgsDebugMsg( "Entered" ); + // Unfortunately this seems to be the only way to set timeout, we try to reset it + // at the end but it can be canceled before ... + QSettings settings; + mOrigTimeout = settings.value( "/qgis/networkAndProxy/networkTimeout", "20000" ).toInt(); + settings.setValue( "/qgis/networkAndProxy/networkTimeout", mTimeout ); + //mCacheDir = QDir( "./wcstestcache" ); mCacheDir = QDir( mCacheDirPath ); if ( !mCacheDir.exists() ) @@ -79,7 +93,6 @@ void TestQgsWcsPublicServers::init() } mHead << "Coverage"; - mHead << "Has size"; QStringList providers; providers << "wcs" << "gdal"; @@ -87,6 +100,9 @@ void TestQgsWcsPublicServers::init() { QString prefix = provider == "gdal" ? "GDAL " : ""; mHead << prefix + "CRS"; + mHead << prefix + "Width"; + mHead << prefix + "Height"; + mHead << prefix + "Extent"; mHead << prefix + "Snap"; mHead << prefix + "Bands"; mHead << prefix + "Type"; @@ -94,6 +110,7 @@ void TestQgsWcsPublicServers::init() mHead << prefix + "Max"; mHead << prefix + "Values"; mHead << prefix + "Colors"; + mHead << prefix + "Time (s)"; } // read servers + issues list @@ -379,6 +396,8 @@ void TestQgsWcsPublicServers::test( ) foreach ( QString provider, providers ) { + QTime time; + time.start(); QString uri; if ( provider == "wcs" ) { @@ -394,7 +413,7 @@ void TestQgsWcsPublicServers::test( ) myStream << " " + serverUrl + "?" + "\n"; myStream << " " + myCoverage.identifier + "\n"; myStream << " " + version + "\n"; - myStream << " 60\n"; + myStream << QString( " %1\n" ).arg( mTimeout / 1000., 0, 'd' ) ; myStream << "\n"; myGdalXmlFile.close(); @@ -404,6 +423,14 @@ void TestQgsWcsPublicServers::test( ) if ( myLayer->isValid() ) { myLog << provider + "_crs:" + myLayer->dataProvider()->crs().authid(); + myLog << provider + "_width:" + QString::number( myLayer->dataProvider()->xSize() ); + myLog << provider + "_height:" + QString::number( myLayer->dataProvider()->ySize() ); + QgsRectangle extent = myLayer->dataProvider()->extent(); + myLog << provider + "_extent:" + + QgsRasterInterface::printValue( extent.xMinimum() ) + "," + + QgsRasterInterface::printValue( extent.yMinimum() ) + "," + + QgsRasterInterface::printValue( extent.xMaximum() ) + "," + + QgsRasterInterface::printValue( extent.yMaximum() ) + ","; int myBandCount = myLayer->dataProvider()->bandCount(); myLog << provider + "_bandCount:" + QString::number( myBandCount ); if ( myBandCount > 0 ) @@ -478,6 +505,9 @@ void TestQgsWcsPublicServers::test( ) QgsDebugMsg( "Layer is not valid" ); myLog << provider + "_error:Layer is not valid"; } + myLog << provider + QString( "_time:%1" ).arg( time.elapsed() / 1000., 0, 'f', 2 ); + // Generate report for impatient people + report(); } QFile myLogFile( myLogPath ); @@ -594,29 +624,33 @@ void TestQgsWcsPublicServers::report() QStringList myValues; myValues << QString( "%2" ).arg( myLog.value( "describeCoverageUrl" ) ).arg( myLog.value( "identifier" ) ); - myValues << myLog.value( "hasSize" ); - myVersionReport += cells( myValues ); + //myValues << myLog.value( "hasSize" ); + myVersionReport += cells( myValues, "", 1, 2 ); myValues.clear(); + QStringList issues = issueDescriptions( myServerLog.value( "server" ), myLog.value( "identifier" ), myLog.value( "version" ) ); + QString issuesString = issues.join( "
" ); + QStringList providers; providers << "wcs" << "gdal"; + bool hasErr = false; foreach ( QString provider, providers ) { - QString imgPath = myVersionDir.absolutePath() + QDir::separator() + QFileInfo( myLogPath ).completeBaseName() + "-" + provider + ".png"; + if ( !myLog.value( provider + "_error" ).isEmpty() ) { myValues << myLog.value( provider + "_error" ); int offender = NoOffender; if ( provider == "wcs" ) { - QStringList issues = issueDescriptions( myServerLog.value( "server" ), myLog.value( "identifier" ), myLog.value( "version" ) ); - myValues << issues.join( "
" ); + myValues << issuesString;; offender = issueOffender( myServerLog.value( "server" ), myLog.value( "identifier" ), myLog.value( "version" ) ); myVersionErrCount++; + hasErr = true; } QString cls; if ( offender == ServerOffender ) @@ -631,12 +665,15 @@ void TestQgsWcsPublicServers::report() { cls = "cell-err"; } - myVersionReport += cells( myValues, cls, 8 ); + myVersionReport += cells( myValues, cls, 12 ); myValues.clear(); } else { myValues << myLog.value( provider + "_crs" ); + myValues << myLog.value( provider + "_width" ); + myValues << myLog.value( provider + "_height" ); + myValues << QString( myLog.value( provider + "_extent" ) ).replace( ",", "
" ); myValues << ""; myValues << myLog.value( provider + "_bandCount" ); myValues << myLog.value( provider + "_srcType" ); @@ -644,6 +681,7 @@ void TestQgsWcsPublicServers::report() myValues << myLog.value( provider + "_max" ); myValues << myLog.value( provider + "_valuesCount" ); myValues << myLog.value( provider + "_colorsCount" ); + myValues << myLog.value( provider + "_time" ); QString cls; int myValuesCount = myLog.value( provider + "_valuesCount" ).toInt(); @@ -671,6 +709,19 @@ void TestQgsWcsPublicServers::report() } } myVersionReport += "\n"; + QString cls; + if ( !issuesString.isEmpty() && !hasErr ) + { + myValues << issuesString; + } + else + { + myValues << ""; + cls = "cell-empty"; + } + myVersionReport += cells( myValues, cls, 24 ); + myValues.clear(); + myVersionReport += "\n"; } // coverages myVersionReport += "\n"; // prepend counts @@ -696,7 +747,7 @@ void TestQgsWcsPublicServers::report() myRep += "