Skip to content

Commit f07880e

Browse files
chore: remove FileReader trait (#286)
1 parent ff592de commit f07880e

File tree

5 files changed

+50
-68
lines changed

5 files changed

+50
-68
lines changed

src/file_reader.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,12 @@ pub enum FileReaderError {
1111
FileNotFound(String),
1212
}
1313

14-
pub trait FileReader {
15-
fn read(&self, path: &Path) -> Result<String, FileReaderError>;
16-
}
17-
1814
#[derive(Default)]
19-
pub struct FSFileReader;
15+
pub struct FSFileReader {}
2016

21-
impl FileReader for FSFileReader {
22-
fn read(&self, file_path: &Path) -> Result<String, FileReaderError> {
17+
#[cfg_attr(test, mockall::automock)]
18+
impl FSFileReader {
19+
pub fn read(&self, file_path: &Path) -> Result<String, FileReaderError> {
2320
if !file_path.is_file() {
2421
return Err(FileReaderError::FileNotFound(format!(
2522
"{}",
@@ -36,19 +33,11 @@ impl FileReader for FSFileReader {
3633
#[cfg(test)]
3734
pub mod test {
3835
use super::*;
39-
use mockall::{mock, predicate};
36+
use mockall::predicate;
4037
use std::io::{Error, ErrorKind};
4138
use std::path::PathBuf;
4239

43-
mock! {
44-
pub FileReaderMock {}
45-
46-
impl FileReader for FileReaderMock {
47-
fn read(&self, path:&Path) -> Result<String, FileReaderError>;
48-
}
49-
}
50-
51-
impl MockFileReaderMock {
40+
impl MockFSFileReader {
5241
pub fn should_read(&mut self, path: &Path, content: String) {
5342
self.expect_read()
5443
.with(predicate::eq(PathBuf::from(path.clone())))

src/opamp/remote_config_hash.rs

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ use crate::config::persister::directory_manager::{
44
DirectoryManagementError, DirectoryManager, DirectoryManagerFs,
55
};
66
use crate::config::super_agent_configs::AgentID;
7-
use crate::file_reader::{FSFileReader, FileReader, FileReaderError};
7+
#[cfg_attr(test, mockall_double::double)]
8+
use crate::file_reader::FSFileReader;
9+
use crate::file_reader::FileReaderError;
810
use crate::super_agent::defaults::{REMOTE_AGENT_DATA_DIR, SUPER_AGENT_DATA_DIR};
911
use serde::{Deserialize, Serialize};
1012
use std::fs::Permissions;
@@ -99,40 +101,38 @@ pub trait HashRepository {
99101

100102
const HASH_FILE_EXTENSION: &str = "yaml";
101103

102-
pub struct HashRepositoryFile<R = FSFileReader, W = WriterFile, D = DirectoryManagerFs>
104+
pub struct HashRepositoryFile<W = WriterFile, D = DirectoryManagerFs>
103105
where
104-
R: FileReader,
105106
W: Writer,
106107
D: DirectoryManager,
107108
{
108-
file_reader: R,
109+
file_reader: FSFileReader,
109110
file_writer: W,
110111
conf_path: PathBuf,
111112
directory_manager: D,
112113
}
113114

114-
impl HashRepositoryFile<FSFileReader, WriterFile, DirectoryManagerFs> {
115+
impl HashRepositoryFile<WriterFile, DirectoryManagerFs> {
115116
// HashGetterPersisterFile with default writer and reader
116117
// and config path
117118
fn new(data_dir: String) -> Self {
118119
HashRepositoryFile {
119-
file_reader: FSFileReader,
120+
file_reader: FSFileReader::default(),
120121
file_writer: WriterFile::default(),
121122
conf_path: PathBuf::from(data_dir),
122123
directory_manager: DirectoryManagerFs::default(),
123124
}
124125
}
125126
}
126127

127-
impl Default for HashRepositoryFile<FSFileReader, WriterFile> {
128+
impl Default for HashRepositoryFile<WriterFile> {
128129
fn default() -> Self {
129130
HashRepositoryFile::new(SUPER_AGENT_DATA_DIR.to_string())
130131
}
131132
}
132133

133-
impl<R, W, D> HashRepository for HashRepositoryFile<R, W, D>
134+
impl<W, D> HashRepository for HashRepositoryFile<W, D>
134135
where
135-
R: FileReader,
136136
W: Writer,
137137
D: DirectoryManager,
138138
{
@@ -160,15 +160,14 @@ where
160160
}
161161
}
162162

163-
impl HashRepositoryFile<FSFileReader, WriterFile> {
163+
impl HashRepositoryFile<WriterFile> {
164164
pub fn new_sub_agent_repository() -> Self {
165165
HashRepositoryFile::new(REMOTE_AGENT_DATA_DIR.to_string())
166166
}
167167
}
168168

169-
impl<R, W, D> HashRepositoryFile<R, W, D>
169+
impl<W, D> HashRepositoryFile<W, D>
170170
where
171-
R: FileReader,
172171
W: Writer,
173172
D: DirectoryManager,
174173
{
@@ -204,8 +203,7 @@ pub mod test {
204203
use crate::config::persister::directory_manager::test::MockDirectoryManagerMock;
205204
use crate::config::persister::directory_manager::DirectoryManager;
206205
use crate::config::super_agent_configs::AgentID;
207-
use crate::file_reader::test::MockFileReaderMock;
208-
use crate::file_reader::FileReader;
206+
use crate::file_reader::MockFSFileReader;
209207
use mockall::{mock, predicate};
210208
use std::fs::Permissions;
211209
use std::path::PathBuf;
@@ -254,14 +252,13 @@ pub mod test {
254252
}
255253
}
256254

257-
impl<R, W, D> HashRepositoryFile<R, W, D>
255+
impl<W, D> HashRepositoryFile<W, D>
258256
where
259-
R: FileReader,
260257
W: Writer,
261258
D: DirectoryManager,
262259
{
263260
pub fn with_mocks(
264-
file_reader: R,
261+
file_reader: MockFSFileReader,
265262
file_writer: W,
266263
directory_manager: D,
267264
conf_path: PathBuf,
@@ -279,7 +276,7 @@ pub mod test {
279276
fn test_save_and_get_hash() {
280277
let some_path = PathBuf::from("some/path");
281278
let mut file_writer_mock = MockFileWriterMock::new();
282-
let mut file_reader_mock = MockFileReaderMock::new();
279+
let mut file_reader_mock = MockFSFileReader::default();
283280
let file_permissions = Permissions::from_mode(FILE_PERMISSIONS);
284281
let agent_id = AgentID::new("SomeAgentID").unwrap();
285282
let mut hash = Hash::new("123456789".to_string());

src/sub_agent/values/values_repository.rs

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ use thiserror::Error;
1010

1111
use crate::config::agent_type::agent_types::FinalAgent;
1212
use crate::config::persister::config_writer_file::{WriteError, Writer, WriterFile};
13-
use crate::file_reader::{FSFileReader, FileReader, FileReaderError};
13+
#[cfg_attr(test, mockall_double::double)]
14+
use crate::file_reader::FSFileReader;
15+
use crate::file_reader::FileReaderError;
1416
use crate::super_agent::defaults::{LOCAL_AGENT_DATA_DIR, REMOTE_AGENT_DATA_DIR, VALUES_FILENAME};
1517
use log::error;
1618
#[cfg(target_family = "unix")]
@@ -55,45 +57,43 @@ pub trait ValuesRepository {
5557
fn delete_remote(&self, agent_id: &AgentID) -> Result<(), ValuesRepositoryError>;
5658
}
5759

58-
pub struct ValuesRepositoryFile<S, F, R>
60+
pub struct ValuesRepositoryFile<S, F>
5961
where
6062
S: DirectoryManager,
6163
F: Writer,
62-
R: FileReader,
6364
{
6465
directory_manager: S,
6566
writer: F,
6667
remote_conf_path: String,
6768
local_conf_path: String,
6869
remote_enabled: bool,
69-
file_reader: R,
70+
file_reader: FSFileReader,
7071
}
7172

72-
impl Default for ValuesRepositoryFile<DirectoryManagerFs, WriterFile, FSFileReader> {
73+
impl Default for ValuesRepositoryFile<DirectoryManagerFs, WriterFile> {
7374
fn default() -> Self {
7475
ValuesRepositoryFile {
7576
directory_manager: DirectoryManagerFs {},
7677
writer: WriterFile {},
7778
remote_conf_path: REMOTE_AGENT_DATA_DIR.to_string(),
7879
local_conf_path: LOCAL_AGENT_DATA_DIR.to_string(),
7980
remote_enabled: false,
80-
file_reader: FSFileReader {},
81+
file_reader: FSFileReader::default(),
8182
}
8283
}
8384
}
8485

85-
impl ValuesRepositoryFile<DirectoryManagerFs, WriterFile, FSFileReader> {
86+
impl ValuesRepositoryFile<DirectoryManagerFs, WriterFile> {
8687
pub fn with_remote(mut self) -> Self {
8788
self.remote_enabled = true;
8889
self
8990
}
9091
}
9192

92-
impl<S, F, R> ValuesRepositoryFile<S, F, R>
93+
impl<S, F> ValuesRepositoryFile<S, F>
9394
where
9495
S: DirectoryManager,
9596
F: Writer,
96-
R: FileReader,
9797
{
9898
pub fn get_values_file_path(&self, agent_id: &AgentID) -> PathBuf {
9999
PathBuf::from(format!(
@@ -128,11 +128,10 @@ where
128128
}
129129
}
130130

131-
impl<S, F, R> ValuesRepository for ValuesRepositoryFile<S, F, R>
131+
impl<S, F> ValuesRepository for ValuesRepositoryFile<S, F>
132132
where
133133
S: DirectoryManager,
134134
F: Writer,
135-
R: FileReader,
136135
{
137136
fn load(
138137
&self,
@@ -228,22 +227,20 @@ pub mod test {
228227
use std::path::{Path, PathBuf};
229228

230229
use crate::config::agent_type::trivial_value::TrivialValue;
231-
use crate::file_reader::test::MockFileReaderMock;
232-
use crate::file_reader::FileReader;
230+
use crate::file_reader::MockFSFileReader;
233231
use crate::super_agent::defaults::default_capabilities;
234232
#[cfg(target_family = "unix")]
235233
use std::os::unix::fs::PermissionsExt;
236234

237-
impl<S, F, R> ValuesRepositoryFile<S, F, R>
235+
impl<S, F> ValuesRepositoryFile<S, F>
238236
where
239237
S: DirectoryManager,
240238
F: Writer,
241-
R: FileReader,
242239
{
243240
pub fn with_mocks(
244241
file_writer: F,
245242
directory_manager: S,
246-
file_reader: R,
243+
file_reader: MockFSFileReader,
247244
local_conf_path: &Path,
248245
remote_conf_path: &Path,
249246
remote_enabled: bool,
@@ -333,7 +330,7 @@ pub mod test {
333330
#[test]
334331
fn test_load_when_remote_enabled() {
335332
//Mocks
336-
let mut file_reader = MockFileReaderMock::new();
333+
let mut file_reader = MockFSFileReader::default();
337334
let file_writer = MockFileWriterMock::new();
338335
let dir_manager = MockDirectoryManagerMock::new();
339336
let remote_conf_path = Path::new("some/remote/path");
@@ -375,7 +372,7 @@ pub mod test {
375372
#[test]
376373
fn test_load_when_remote_disabled() {
377374
//Mocks
378-
let mut file_reader = MockFileReaderMock::new();
375+
let mut file_reader = MockFSFileReader::default();
379376
let file_writer = MockFileWriterMock::new();
380377
let dir_manager = MockDirectoryManagerMock::new();
381378
let remote_conf_path = Path::new("some/remote/path");
@@ -417,7 +414,7 @@ pub mod test {
417414
#[test]
418415
fn test_load_when_remote_enabled_file_not_found_fallbacks_to_local() {
419416
//Mocks
420-
let mut file_reader = MockFileReaderMock::new();
417+
let mut file_reader = MockFSFileReader::default();
421418
let file_writer = MockFileWriterMock::new();
422419
let dir_manager = MockDirectoryManagerMock::new();
423420
let remote_conf_path = Path::new("some/remote/path");
@@ -464,7 +461,7 @@ pub mod test {
464461
#[test]
465462
fn test_load_local_file_not_found_should_return_defaults() {
466463
//Mocks
467-
let mut file_reader = MockFileReaderMock::new();
464+
let mut file_reader = MockFSFileReader::default();
468465
let file_writer = MockFileWriterMock::new();
469466
let dir_manager = MockDirectoryManagerMock::new();
470467
let remote_conf_path = Path::new("some/remote/path");
@@ -497,7 +494,7 @@ pub mod test {
497494
#[test]
498495
fn test_load_when_remote_enabled_io_error() {
499496
//Mocks
500-
let mut file_reader = MockFileReaderMock::new();
497+
let mut file_reader = MockFSFileReader::default();
501498
let file_writer = MockFileWriterMock::new();
502499
let dir_manager = MockDirectoryManagerMock::new();
503500
let remote_conf_path = Path::new("some/remote/path");
@@ -532,7 +529,7 @@ pub mod test {
532529
#[test]
533530
fn test_load_local_io_error() {
534531
//Mocks
535-
let mut file_reader = MockFileReaderMock::new();
532+
let mut file_reader = MockFSFileReader::default();
536533
let file_writer = MockFileWriterMock::new();
537534
let dir_manager = MockDirectoryManagerMock::new();
538535
let remote_conf_path = Path::new("some/remote/path");
@@ -567,7 +564,7 @@ pub mod test {
567564
#[test]
568565
fn test_store_remote() {
569566
//Mocks
570-
let file_reader = MockFileReaderMock::new();
567+
let file_reader = MockFSFileReader::default();
571568
let mut file_writer = MockFileWriterMock::new();
572569
let mut dir_manager = MockDirectoryManagerMock::new();
573570
let remote_conf_path = Path::new("some/remote/path");
@@ -607,7 +604,7 @@ pub mod test {
607604
#[test]
608605
fn test_store_remote_error_deleting_dir() {
609606
//Mocks
610-
let file_reader = MockFileReaderMock::new();
607+
let file_reader = MockFSFileReader::default();
611608
let file_writer = MockFileWriterMock::new();
612609
let mut dir_manager = MockDirectoryManagerMock::new();
613610
let remote_conf_path = Path::new("some/remote/path");
@@ -645,7 +642,7 @@ pub mod test {
645642
#[test]
646643
fn test_store_remote_error_creating_dir() {
647644
//Mocks
648-
let file_reader = MockFileReaderMock::new();
645+
let file_reader = MockFSFileReader::default();
649646
let file_writer = MockFileWriterMock::new();
650647
let mut dir_manager = MockDirectoryManagerMock::new();
651648
let remote_conf_path = Path::new("some/remote/path");
@@ -686,7 +683,7 @@ pub mod test {
686683
#[test]
687684
fn test_store_remote_error_writing_file() {
688685
//Mocks
689-
let file_reader = MockFileReaderMock::new();
686+
let file_reader = MockFSFileReader::default();
690687
let mut file_writer = MockFileWriterMock::new();
691688
let mut dir_manager = MockDirectoryManagerMock::new();
692689
let remote_conf_path = Path::new("some/remote/path");
@@ -732,7 +729,7 @@ pub mod test {
732729
#[test]
733730
fn test_delete_remote_all() {
734731
//Mocks
735-
let file_reader = MockFileReaderMock::new();
732+
let file_reader = MockFSFileReader::default();
736733
let file_writer = MockFileWriterMock::new();
737734
let mut dir_manager = MockDirectoryManagerMock::new();
738735
let remote_conf_path = Path::new("some/remote/path");
@@ -756,7 +753,7 @@ pub mod test {
756753
#[test]
757754
fn test_delete_remote() {
758755
//Mocks
759-
let file_reader = MockFileReaderMock::new();
756+
let file_reader = MockFSFileReader::default();
760757
let file_writer = MockFileWriterMock::new();
761758
let mut dir_manager = MockDirectoryManagerMock::new();
762759
let remote_conf_path = Path::new("some/remote/path");
@@ -790,7 +787,7 @@ pub mod test {
790787
let mut remote_dir = PathBuf::from(&tempdir.path());
791788
remote_dir.push("remote_dir");
792789

793-
let file_reader = MockFileReaderMock::new();
790+
let file_reader = MockFSFileReader::default();
794791
let dir_manager = DirectoryManagerFs::default();
795792
let remote_enabled = true;
796793

src/super_agent/effective_agents_assembler.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use crate::{
1818
config_persister_file::ConfigurationPersisterFile,
1919
},
2020
},
21-
file_reader::{FSFileReader, FileReaderError},
21+
file_reader::FileReaderError,
2222
};
2323

2424
#[derive(Error, Debug)]
@@ -67,7 +67,7 @@ impl Default
6767
for LocalEffectiveAgentsAssembler<
6868
LocalRegistry,
6969
ConfigurationPersisterFile,
70-
ValuesRepositoryFile<DirectoryManagerFs, WriterFile, FSFileReader>,
70+
ValuesRepositoryFile<DirectoryManagerFs, WriterFile>,
7171
>
7272
{
7373
fn default() -> Self {

0 commit comments

Comments
 (0)