Skip to content

Commit 21edca0

Browse files
committed
code restructuring
1 parent 89255c2 commit 21edca0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+14993
-3313
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
*.so
99
*.dylib
1010
bin/
11+
.idea/"
12+
main
1113

1214
# Test binary, built with `go test -c`
1315
*.test

AGENTS.md

Lines changed: 57 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,50 +67,91 @@ var _ = Describe("Component Name", func() {
6767
## Key Files & Their Purpose
6868

6969
### Critical Controller Files
70-
- `internal/controller/olsconfig_controller.go` - Main reconciler
71-
- `internal/controller/ols_app_server_reconciliator.go` - App server components (12 tasks)
72-
- `internal/controller/constants.go` - All constant definitions
73-
- `internal/controller/utils.go` - Utility functions
70+
- `internal/controller/olsconfig_controller.go` - Main reconciler orchestrator
71+
- `internal/controller/appserver/reconciler.go` - App server components
72+
- `internal/controller/postgres/reconciler.go` - PostgreSQL database components
73+
- `internal/controller/console/reconciler.go` - Console UI plugin components
74+
- `internal/controller/utils/utils.go` - Shared utilities and constants
7475

7576
### API & Types
7677
- `api/v1alpha1/olsconfig_types.go` - Main CRD struct definitions
7778
- Includes: `LLMSpec`, `OLSSpec`, `DeploymentConfig`, etc.
7879

7980
### Tests to Check
80-
- Unit: `internal/controller/*_test.go`
81-
- E2E: `test/e2e/reconciliation_test.go`, `test/e2e/upgrade_test.go`
81+
- **Unit Tests** (co-located with source):
82+
- `internal/controller/*_test.go` - Main controller tests
83+
- `internal/controller/appserver/*_test.go` - App server component tests
84+
- `internal/controller/postgres/*_test.go` - PostgreSQL component tests
85+
- `internal/controller/console/*_test.go` - Console UI component tests
86+
- `internal/controller/utils/*_test.go` - Utility function tests
87+
- **E2E Tests**: `test/e2e/reconciliation_test.go`, `test/e2e/upgrade_test.go`
88+
- **Test Infrastructure**:
89+
- `internal/controller/utils/testing.go` - Test reconciler and utilities
90+
- `internal/controller/utils/test_fixtures.go` - CR fixtures and resource helpers
8291

8392
## Common Tasks & Patterns
8493

8594
### Adding New Reconciliation Step
86-
1. Add to `ReconcileTask` slice in `reconcileAppServer()`
87-
2. Implement `reconcile<NewComponent>()` method
88-
3. Add constants to `constants.go`
95+
96+
**For App Server Components:**
97+
1. Add to `ReconcileTask` slice in `internal/controller/appserver/reconciler.go`
98+
2. Implement `reconcile<NewComponent>()` function in appropriate file
99+
3. Add constants to `internal/controller/utils/utils.go`
89100
4. Add error constants with `Err<Action><Component>` pattern
90-
5. Write unit tests in `*_test.go`
101+
5. Write unit tests in `internal/controller/appserver/*_test.go`
102+
103+
**For New Top-Level Components:**
104+
1. Create new package under `internal/controller/<component>/`
105+
2. Implement `Reconcile<Component>()` function accepting `reconciler.Reconciler`
106+
3. Add reconciliation step to `olsconfig_controller.go`
107+
4. Create test suite with `suite_test.go` and component tests
108+
5. Use shared test helpers from `utils/testing.go` and `utils/test_fixtures.go`
91109

92110
### Resource Generation Pattern
93111
```go
94-
func (r *OLSConfigReconciler) reconcile<Resource>(ctx context.Context, cr *olsv1alpha1.OLSConfig) error {
95-
resource, err := r.generate<Resource>(cr)
112+
func reconcile<Resource>(r reconciler.Reconciler, ctx context.Context, cr *olsv1alpha1.OLSConfig) error {
113+
resource, err := generate<Resource>(r, cr)
96114
if err != nil {
97-
return fmt.Errorf("%s: %w", Err<Action><Resource>, err)
115+
return fmt.Errorf("%s: %w", utils.Err<Action><Resource>, err)
98116
}
99117

100118
found := &<ResourceType>{}
101-
err = r.Get(ctx, client.ObjectKey{Name: <name>, Namespace: r.Options.Namespace}, found)
119+
err = r.Get(ctx, client.ObjectKey{Name: <name>, Namespace: r.GetNamespace()}, found)
102120
if err != nil && errors.IsNotFound(err) {
103-
r.logger.Info("creating new <resource>", "<resource>", resource.Name)
121+
r.GetLogger().Info("creating new <resource>", "<resource>", resource.Name)
104122
return r.Create(ctx, resource)
105123
} else if err != nil {
106-
return fmt.Errorf("%s: %w", ErrGet<Resource>, err)
124+
return fmt.Errorf("%s: %w", utils.ErrGet<Resource>, err)
107125
}
108126

109127
// Update logic if needed
110128
return nil
111129
}
112130
```
113131

132+
### Testing Pattern
133+
```go
134+
// In suite_test.go
135+
var _ = Describe("<Component> Name", func() {
136+
It("should describe expected behavior", func() {
137+
// Arrange - Create test resources
138+
cr := utils.GetDefaultOLSConfigCR()
139+
140+
// Act - Call reconciliation function
141+
err := Reconcile<Component>(testReconcilerInstance, ctx, cr)
142+
143+
// Assert with Gomega matchers
144+
Expect(err).NotTo(HaveOccurred())
145+
146+
// Verify resource was created
147+
resource := &<ResourceType>{}
148+
err = testReconcilerInstance.Get(ctx, client.ObjectKey{...}, resource)
149+
Expect(err).NotTo(HaveOccurred())
150+
Expect(resource.Spec.Field).To(Equal(expectedValue))
151+
})
152+
})
153+
```
154+
114155
## Dependencies & Tools
115156

116157
### Core Dependencies

0 commit comments

Comments
 (0)