Conversation
cmd/agent/main.go
Outdated
| "time" | ||
| ) | ||
|
|
||
| func parseFlags(cfg *agentconfig.Config, defaultServerAddress, defaultKey string, defaultReportInterval, defaultPollInterval, defaultRateLimit int) { |
There was a problem hiding this comment.
Постарайся оставлять в main.go (и в пакете main) как можно меньше логики: там могут лежать только создание и настройка компонентов, инъекции зависимостей и запуск сервиса. Всю остальную логику, например, получение конфигурации, нужно перенести в internal
internal/agent/agent.go
Outdated
| jobsCh <- metricBatch | ||
| } | ||
| }() | ||
| case <-stopCh: |
There was a problem hiding this comment.
stopCh в твоем коде никак не используется после инициализации. В каком случае из него может что-то вычитаться?
internal/agent/agent.go
Outdated
| log.Printf("Sending metrics %v", metrics[0]) | ||
| err := a.sender.SendJSONWithRetries(metrics...) | ||
| if err != nil { | ||
| log.Printf("error sending metrics: %v", err) |
There was a problem hiding this comment.
Во втором спринте ты добавлял в код структурированный логгер. Теперь стоит исползовать его вместо пакета log
internal/agent/agent_test.go
Outdated
| "time" | ||
| ) | ||
|
|
||
| type MockCollector struct { |
There was a problem hiding this comment.
Не пиши моки вручную, генерируй их.
Для testify-совместимых моков лучше использовать https://github.com/vektra/mockery, который позволяет генерировать моки из интерфейсов
internal/agent/collector.go
Outdated
| type Collector struct { | ||
| pollCount int64 | ||
| Metrics []*models.Metrics | ||
| Metrics [][]*models.Metrics |
There was a problem hiding this comment.
Не надо делать это поле экспортируемым. Если к нему у кого-то должен быть доступ, напиши соответствующие методы (не забудь, что поле должно защищаться мьютексом)
internal/agent/collector.go
Outdated
| result := make([]*models.Metrics, len(c.Metrics)) | ||
| func (c *Collector) CollectSystem() { | ||
| log.Printf("Collecting system metrics") | ||
| v, _ := mem.VirtualMemory() |
Внесены правки в структуру проекта
No description provided.