Skip to content

Челаев Петр Лаб. 3 Группа 6512 #89

Open
PripyatskyPrometheus wants to merge 41 commits into
itsecd:mainfrom
PripyatskyPrometheus:main
Open

Челаев Петр Лаб. 3 Группа 6512 #89
PripyatskyPrometheus wants to merge 41 commits into
itsecd:mainfrom
PripyatskyPrometheus:main

Conversation

@PripyatskyPrometheus
Copy link
Copy Markdown

ФИО: Челаев Петр
Номер группы: 6512
Номер лабораторной: 3
Номер варианта: 35
Краткое описание предметной области: Программный проект
Краткое описание добавленных фич: Реализован файловый сервис, добавлено объектное хранилище и интеграционные тесты

PripyatskyPrometheus and others added 29 commits February 22, 2026 22:26
…кам чёткое без огрехов, как ыло с автоматической
@github-actions github-actions Bot added the In progress Код в процессе проверки label Apr 5, 2026
@github-actions github-actions Bot added the Lab 3 Лабораторная №3. Интеграционное тестирование label Apr 5, 2026
@github-actions github-actions Bot requested a review from Gwymlas April 5, 2026 16:42
Comment thread ProgramProject.AppHost/AppHost.cs Outdated
// Сервис генерации теперь делится на 5 реплик
var generators = new List<IResourceBuilder<ProjectResource>>();
// Minio (объектное хранилище)
var minio = builder.AddContainer("minio", "minio/minio")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Лучше использовать готовый aspire пакет (CommunityToolkit.Aspire.Hosting.Minio), в просто поднятом контейнере не будет телеметрии и сервис дискавери

Comment thread ProgramProject.AppHost/AppHost.cs Outdated

// Эмулятор Amazon SQS, добавлен для корректной отработки тестов
// (до этого были постоянные ошибки тестов из-за рандомизации портов)
var sqs = builder.AddContainer("elasticmq", "softwaremill/elasticmq")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь тоже использовать aspire пакет

.WithHttpEndpoint(port: 9324, targetPort: 9324, name: "http");

// Создаём 5 генераторов в цикле
var generators = new List<IResourceBuilder<ProjectResource>>();
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Генераторам стоит добавить ожидание брокера

Comment on lines +21 to +33
public SqsBackgroundService(
IAmazonSQS sqsClient,
IMinioClient minioClient,
IConfiguration configuration,
ILogger<SqsBackgroundService> logger)
{
_sqsClient = sqsClient;
_minioClient = minioClient;
_logger = logger;

_queueUrl = configuration["SQS:QueueUrl"] ?? "http://localhost:9324/queue/projects";
_bucketName = configuration["Minio:BucketName"] ?? "projects";
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Использовать праймари конструктор

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SqsBackgroundService сейчас выполняет инициализацию инфраструктуры, чтение из очереди и сохраняет данные в объектное хранилище. Думаю стоит разбить на несколько служб, сейчас нарушается srp

{
public DistributedApplication App { get; private set; } = null!;
public IAmazonS3 S3Client { get; private set; } = null!;
public string SqsUrl { get; private set; } = null!;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вроде нигде не используется

Comment on lines +56 to +65
try
{
await S3Client.GetBucketLocationAsync("projects");
Console.WriteLine("Бакет projects существует");
}
catch (AmazonS3Exception ex) when (ex.ErrorCode == "NoSuchBucket")
{
await S3Client.PutBucketAsync("projects");
Console.WriteLine("Бакет projects создан");
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Разве файловый сервис сам не создаст бакет?

/// Проверяет, что все поля модели программного проекта заполнены корректно
/// </summary>
[Fact]
public async Task AllFieldsPopulated()
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне кажется этот и Generator_GetById_ReturnsValidProject можно объединить, один чуть шире проверяет поля чем другой

/// Сквозной тест, проверяющий полный путь данных через GenerationService,SQS, FileService и Mini
/// </summary>
[Fact]
public async Task Minio_FileSaved()
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Может тут и в Minio_FileContentMatchesApiResponse обращаться не к сервису генерации, а к gateway, чтобы пройти весь путь

Comment on lines +149 to +151
Assert.Equal(apiProject.Name, savedProject.Name);
Assert.Equal(apiProject.Customer, savedProject.Customer);
Assert.Equal(apiProject.Budget, savedProject.Budget);
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Возможно лучше использовать
Assert.Equivalent(apiProject, savedProject);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

In progress Код в процессе проверки Lab 3 Лабораторная №3. Интеграционное тестирование

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants