package org.osmdroid.bugtestfragments;
import android.util.Log;
import org.osmdroid.samplefragments.BaseSampleFragment;
import org.osmdroid.tileprovider.modules.IFilesystemCache;
import org.osmdroid.tileprovider.modules.SqlTileWriter;
import org.osmdroid.util.GeoPoint;
/**
* Created by alex on 10/21/16.
*/
public class Bug445Caching extends BaseSampleFragment {
@Override
public String getSampleTitle() {
return "Bug 445 Ensure Caching works";
}
SqlTileWriter writer=null;
protected void addOverlays() {
IFilesystemCache tileWriter = mMapView.getTileProvider().getTileWriter();
if (tileWriter instanceof SqlTileWriter){
writer = (SqlTileWriter) tileWriter;
writer.purgeCache();
}
mMapView.getController().setCenter(new GeoPoint(52.2742, 0.21130));
mMapView.getController().setZoom(17);
}
public void runTestProcedures() throws Exception {
if (writer==null)
return;
mMapView.setUseDataConnection(true);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(1);
}
});
writer.purgeCache();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(17);
}
});
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(18);
}
});
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(19);
}
});
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
long count=writer.getRowCount(mMapView.getTileProvider().getTileSource().name());
Log.i(TAG, "downloaded " + count + " tiles during the test");
if (count< 20) //it should be around 45 for the complete set, depending on screen size
throw new Exception("only fetched " + count + " tiles");
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(1);
}
});
mMapView.setUseDataConnection(false);
mMapView.getTileProvider().clearTileCache();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(17);
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(18);
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mMapView.getController().setZoom(19);
}
});
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (mMapView.getTileProvider().getQueueSize()>0){
throw new Exception("queue size is greater than expected " + mMapView.getTileProvider().getQueueSize());
}
}
}