diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-12 19:10:26 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2017-08-12 21:15:23 +0200 |
commit | 32708687dbb496e6b8d74c806126f0f28a3ac2a2 (patch) | |
tree | 68c40af197f252e4c301fe333825e9a38f6d68f5 /sc/source/ui | |
parent | c88d4ddfcdbf3fcaf7eddbfc56ec9e15392ecf85 (diff) |
external data: introduce a deterministic mode for the tests
Change-Id: I5804800216bd7d22b89a4e54d3f46cc3520f7c42
Reviewed-on: https://gerrit.libreoffice.org/41091
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
Diffstat (limited to 'sc/source/ui')
-rw-r--r-- | sc/source/ui/dataprovider/csvdataprovider.cxx | 6 | ||||
-rw-r--r-- | sc/source/ui/dataprovider/dataprovider.cxx | 15 | ||||
-rw-r--r-- | sc/source/ui/inc/dataprovider.hxx | 9 |
3 files changed, 29 insertions, 1 deletions
diff --git a/sc/source/ui/dataprovider/csvdataprovider.cxx b/sc/source/ui/dataprovider/csvdataprovider.cxx index cd87d21c3de4..4e2aea9cffa9 100644 --- a/sc/source/ui/dataprovider/csvdataprovider.cxx +++ b/sc/source/ui/dataprovider/csvdataprovider.cxx @@ -202,6 +202,12 @@ void CSVDataProvider::Import() mpDoc->ResetClip(mpDocument, (SCTAB)0); mxCSVFetchThread = new CSVFetchThread(*mpDoc, maURL, &maIdle); mxCSVFetchThread->launch(); + + if (mbDeterministic) + { + SolarMutexReleaser aReleaser; + mxCSVFetchThread->join(); + } } IMPL_LINK_NOARG(CSVDataProvider, ImportFinishedHdl, Timer*, void) diff --git a/sc/source/ui/dataprovider/dataprovider.cxx b/sc/source/ui/dataprovider/dataprovider.cxx index 119dbdd18e9b..79b936f5d704 100644 --- a/sc/source/ui/dataprovider/dataprovider.cxx +++ b/sc/source/ui/dataprovider/dataprovider.cxx @@ -107,7 +107,7 @@ double ExternalDataSource::getUpdateFrequency() const return mnUpdateFrequency; } -void ExternalDataSource::refresh(ScDocument* pDoc) +void ExternalDataSource::refresh(ScDocument* pDoc, bool bDeterministic) { // no DB data available if (!mpDBDataManager) @@ -121,6 +121,9 @@ void ExternalDataSource::refresh(ScDocument* pDoc) if (!mpDataProvider) return; + if (bDeterministic) + mpDataProvider->setDeterministic(); + mpDataProvider->Import(); } @@ -148,6 +151,16 @@ std::vector<sc::ExternalDataSource>& ExternalDataMapper::getDataSources() return maDataSources; } +DataProvider::DataProvider(): + mbDeterministic(false) +{ +} + +void DataProvider::setDeterministic() +{ + mbDeterministic = true; +} + DataProvider::~DataProvider() { } diff --git a/sc/source/ui/inc/dataprovider.hxx b/sc/source/ui/inc/dataprovider.hxx index 00fec69638fb..c45adc9616a1 100644 --- a/sc/source/ui/inc/dataprovider.hxx +++ b/sc/source/ui/inc/dataprovider.hxx @@ -76,7 +76,14 @@ public: */ class DataProvider { +protected: + /** + * If true make the threaded import deterministic for the tests. + */ + bool mbDeterministic; + public: + DataProvider(); virtual ~DataProvider() = 0; virtual void Import() = 0; @@ -84,6 +91,8 @@ public: virtual const OUString& GetURL() const = 0; static std::unique_ptr<SvStream> FetchStreamFromURL(const OUString&, OStringBuffer& rBuffer); + + void setDeterministic(); }; class CSVDataProvider : public DataProvider |