Skip to content

Commit 521192a

Browse files
Merge pull request #1152 from arcaneframework/dev/gg-add-hash-only-in-basic-writer
Add support for saving only comparison hash in 'BasicWriter'
2 parents ce6ff1d + 4c9345f commit 521192a

13 files changed

+373
-234
lines changed

arcane/src/arcane/core/IVerifierService.h

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
22
//-----------------------------------------------------------------------------
3-
// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3+
// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
44
// See the top-level COPYRIGHT file for details.
55
// SPDX-License-Identifier: Apache-2.0
66
//-----------------------------------------------------------------------------
77
/*---------------------------------------------------------------------------*/
8-
/* IVerifierService.h (C) 2000-2022 */
8+
/* IVerifierService.h (C) 2000-2024 */
99
/* */
1010
/* Interface du service de vérification des données entre deux exécutions. */
1111
/*---------------------------------------------------------------------------*/
12-
#ifndef ARCANE_IVERIFIERSERVICE_H
13-
#define ARCANE_IVERIFIERSERVICE_H
12+
#ifndef ARCANE_CORE_IVERIFIERSERVICE_H
13+
#define ARCANE_CORE_IVERIFIERSERVICE_H
1414
/*---------------------------------------------------------------------------*/
1515
/*---------------------------------------------------------------------------*/
1616

17-
#include "arcane/ArcaneTypes.h"
18-
#include "arcane/IService.h"
17+
#include "arcane/core/ArcaneTypes.h"
1918

2019
/*---------------------------------------------------------------------------*/
2120
/*---------------------------------------------------------------------------*/
@@ -32,17 +31,38 @@ namespace Arcane
3231
*/
3332
class IVerifierService
3433
{
34+
public:
35+
36+
/*!
37+
* \brief Mode de comparaison
38+
*/
39+
enum class eCompareMode
40+
{
41+
//! Compare toutes les valeurs
42+
Values,
43+
/*!
44+
* \brief Compare uniquement les hash des valeurs.
45+
*
46+
* Ce mode permet uniquement de détecter si deux valeurs sont différentes
47+
* sans pouvoir connaitre cette différence. Il est cependant plus rapide
48+
* que le mode \a Values et permet de limiter la taille des fichiers
49+
* de comparaison.
50+
*/
51+
HashOnly
52+
};
53+
3554
public:
3655

3756
//! Libère les ressources
38-
virtual ~IVerifierService() {}
57+
virtual ~IVerifierService() = default;
3958

4059
public:
4160

4261
//! Ecrit le fichier référence
43-
virtual void writeReferenceFile() =0;
62+
virtual void writeReferenceFile() = 0;
4463

45-
/*! \brief Effectue la vérification à partir du fichier référence.
64+
/*!
65+
* \brief Effectue la vérification à partir du fichier référence.
4666
*
4767
* \param parallel_sequential si vrai, indique qu'on compare le résultat
4868
* d'une exécution parallèle avec celui d'une exécution séquentielle. Cette
@@ -55,26 +75,31 @@ class IVerifierService
5575
* en général ne pas faire de vérification sur les entités fantômes. Cette
5676
* option est inactive si l'exécution est séquentielle.
5777
*/
58-
virtual void doVerifFromReferenceFile(bool parallel_sequential,bool compare_ghost) =0;
78+
virtual void doVerifFromReferenceFile(bool parallel_sequential, bool compare_ghost) = 0;
5979

6080
public:
61-
81+
6282
//! Positionne le nom du fichier contenant les valeurs de référence
63-
virtual void setFileName(const String& file_name) =0;
83+
virtual void setFileName(const String& file_name) = 0;
6484
//! Nom du fichier contenant les valeurs de référence
65-
virtual String fileName() const =0;
85+
virtual String fileName() const = 0;
6686

6787
public:
6888

69-
virtual void setResultFileName(const String& file_name) =0;
70-
virtual String resultfileName() const =0;
89+
//! Nom du fichier contenant les résultats
90+
virtual void setResultFileName(const String& file_name) = 0;
91+
virtual String resultfileName() const = 0;
92+
93+
//! Type de comparaison souhaité
94+
virtual void setCompareMode(eCompareMode v) = 0;
95+
virtual eCompareMode compareMode() const = 0;
7196

7297
public:
73-
98+
7499
//! Positionne le nom du sous répertoire contenant les valeurs de référence
75-
virtual void setSubDir(const String& sub_dir) =0;
100+
virtual void setSubDir(const String& sub_dir) = 0;
76101
//! Nom du fichier contenant les valeurs de référence
77-
virtual String subDir() const =0;
102+
virtual String subDir() const = 0;
78103
};
79104

80105
/*---------------------------------------------------------------------------*/

arcane/src/arcane/core/VerifierService.h

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
22
//-----------------------------------------------------------------------------
3-
// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
3+
// Copyright 2000-2024 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
44
// See the top-level COPYRIGHT file for details.
55
// SPDX-License-Identifier: Apache-2.0
66
//-----------------------------------------------------------------------------
77
/*---------------------------------------------------------------------------*/
8-
/* VerifierService.h (C) 2000-2022 */
8+
/* VerifierService.h (C) 2000-2024 */
99
/* */
1010
/* Classe de base du service de vérification des variables. */
1111
/*---------------------------------------------------------------------------*/
12-
#ifndef ARCANE_VERIFIERSERVICE_H
13-
#define ARCANE_VERIFIERSERVICE_H
12+
#ifndef ARCANE_CORE_VERIFIERSERVICE_H
13+
#define ARCANE_CORE_VERIFIERSERVICE_H
1414
/*---------------------------------------------------------------------------*/
1515
/*---------------------------------------------------------------------------*/
1616

1717
#include "arcane/utils/String.h"
1818

19-
#include "arcane/ArcaneTypes.h"
20-
#include "arcane/AbstractService.h"
21-
#include "arcane/IVerifierService.h"
19+
#include "arcane/core/ArcaneTypes.h"
20+
#include "arcane/core/AbstractService.h"
21+
#include "arcane/core/IVerifierService.h"
2222

2323
/*---------------------------------------------------------------------------*/
2424
/*---------------------------------------------------------------------------*/
@@ -44,26 +44,33 @@ class ARCANE_CORE_EXPORT VerifierService
4444
, public IVerifierService
4545
{
4646
private:
47+
4748
struct DiffInfo
4849
{
4950
public:
51+
5052
DiffInfo()
51-
: m_variable_name(), m_nb_diff(0)
52-
{}
53-
DiffInfo(const String& var_name,Int64 nb_diff)
54-
: m_variable_name(var_name), m_nb_diff(nb_diff)
55-
{}
53+
: m_variable_name()
54+
, m_nb_diff(0)
55+
{}
56+
DiffInfo(const String& var_name, Int64 nb_diff)
57+
: m_variable_name(var_name)
58+
, m_nb_diff(nb_diff)
59+
{}
60+
5661
public:
62+
5763
String m_variable_name;
5864
Int64 m_nb_diff;
5965
};
66+
6067
public:
6168

6269
explicit VerifierService(const ServiceBuildInfo& sbi);
6370
~VerifierService() override;
6471

6572
public:
66-
73+
6774
IBase* serviceParent() const override;
6875
IServiceInfo* serviceInfo() const override { return m_service_info; }
6976
IService* serviceInterface() override { return this; }
@@ -78,35 +85,37 @@ class ARCANE_CORE_EXPORT VerifierService
7885
void setResultFileName(const String& file_name) override { m_result_file_name = file_name; }
7986
String resultfileName() const override { return m_result_file_name; }
8087

81-
public:
82-
88+
//! Type de comparaison souhaité
89+
void setCompareMode(eCompareMode v) override { m_compare_mode = v; }
90+
eCompareMode compareMode() const override { return m_compare_mode; }
91+
8392
void setSubDir(const String& sub_dir) override { m_sub_dir = sub_dir; }
8493
String subDir() const override { return m_sub_dir; }
8594

8695
protected:
8796

88-
virtual void _doVerif(IDataReader* reader,const VariableCollection& variables,bool compare_ghost);
97+
virtual void _doVerif(IDataReader* reader, const VariableCollection& variables, bool compare_ghost);
8998
//! Remplit dans \a variables la liste des variables devant être relues
90-
virtual void _getVariables(VariableList variables,bool parallel_sequential);
99+
virtual void _getVariables(VariableList variables, bool parallel_sequential);
91100

92101
public:
93102

94103
ISubDomain* subDomain() { return m_sub_domain; }
95104

96105
protected:
97-
98106
private:
99107

100-
ISubDomain* m_sub_domain;
101-
IServiceInfo* m_service_info;
108+
ISubDomain* m_sub_domain = nullptr;
109+
IServiceInfo* m_service_info = nullptr;
102110
String m_file_name;
103111
String m_result_file_name;
104112
String m_sub_dir;
113+
eCompareMode m_compare_mode = eCompareMode::Values;
105114

106115
private:
107116

108-
template<typename ReaderType> void
109-
_doVerif2(ReaderType reader,const VariableList& variables,bool compare_ghost);
117+
template <typename ReaderType> void
118+
_doVerif2(ReaderType reader, const VariableList& variables, bool compare_ghost);
110119
};
111120

112121
/*---------------------------------------------------------------------------*/

0 commit comments

Comments
 (0)