Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
a3986f7
feat: Add build script and update project plan for Phase 1.5
maxpert Sep 25, 2025
87e7952
chore: consolidate git repository structure and add source code
maxpert Sep 25, 2025
c2b2945
chore: add root .gitignore and finalize project structure
maxpert Sep 25, 2025
b566cb3
feat: Phase 2 - Exchange and Queue Management Implementation
maxpert Sep 25, 2025
d50b506
feat: Phase 2 integration tests and fixes
maxpert Sep 25, 2025
ab0a0c3
feat: Phase 3 - Message Publishing and Consumption Implementation
maxpert Sep 25, 2025
088e180
feat: Phase 3 - Message Publishing and Consumption - Major Progress
maxpert Oct 1, 2025
0803cd3
docs: update plan.md with Phase 3 major progress completion
maxpert Oct 1, 2025
80dbf98
test: add explicit basic.nack tests for complete Phase 3 coverage
maxpert Oct 1, 2025
058c960
fix: correct .gitignore to properly track source files
maxpert Oct 1, 2025
7c94d11
feat: add previously ignored test and protocol files
maxpert Oct 1, 2025
5be3f19
feat: Major Phase 3 Progress - AMQP Protocol Debugging and Frame Tran…
maxpert Oct 4, 2025
9e8d988
feat: Complete Phase 3 - Full AMQP 0.9.1 Protocol Compliance and Stan…
maxpert Oct 4, 2025
b7bbc34
feat: Phase 4 - Package Restructuring Complete
maxpert Oct 4, 2025
3fe2a02
feat: Phase 4 - Interface-Based Design Complete
maxpert Oct 4, 2025
45d7ec3
feat: Phase 4 - Configuration System Complete
maxpert Oct 4, 2025
e52e920
feat: Phase 4 - Builder Pattern Complete
maxpert Oct 4, 2025
759b73f
feat: Phase 4 - Complete Library Refactoring and Reusability Foundation
maxpert Oct 4, 2025
d42fe20
feat: Phase 5 - Complete Storage Implementation with Abstraction
maxpert Oct 4, 2025
ad9a97b
feat: Phase 6 - Complete Persistence and Reliability Implementation
maxpert Oct 4, 2025
386d1dd
feat: Phase 6 - Persistence and Reliability Complete
maxpert Oct 5, 2025
6c2c95f
feat: Implement comprehensive AMQP 0.9.1 transaction system with plug…
maxpert Oct 5, 2025
1c58e2e
docs: Add comprehensive transaction examples and documentation to REA…
maxpert Oct 5, 2025
01f20a5
fix: Move README.md to project root directory
maxpert Oct 5, 2025
7afdad9
docs: Add comprehensive configuration documentation to README.md
maxpert Oct 6, 2025
8853ae4
feat: Completely rewrite main.go to use comprehensive configuration s…
maxpert Oct 6, 2025
6778d09
feat: Implement comprehensive Unix daemon mode with double-fork techn…
maxpert Oct 6, 2025
bc716e4
feat: Implement PLAIN and ANONYMOUS SASL authentication mechanisms
maxpert Oct 7, 2025
1d92759
docs: Update plan.md to mark authentication implementation as completed
maxpert Oct 7, 2025
82163a5
chore: Apply go fmt formatting and update project configuration
maxpert Oct 7, 2025
3561a51
feat: Add authentication enforcement and comprehensive integration tests
maxpert Oct 7, 2025
383f114
docs: Update plan.md to mark Phase 7 as completed
maxpert Oct 7, 2025
bddf484
docs: Remove TLS/SSL implementation from roadmap
maxpert Oct 7, 2025
4783358
feat: Implement comprehensive Prometheus metrics collection system
maxpert Oct 7, 2025
34ebd14
test: Fix integration tests and verify Phase 8 testing requirements
maxpert Oct 7, 2025
1b55205
docs: Mark Phase 8 (Testing and Refinement) as complete
maxpert Oct 7, 2025
95cb3e9
test: Enhance protocol package test coverage from 2.5% to 39.4%
maxpert Oct 30, 2025
ae4325c
test: Complete protocol testing Phases 5-7, coverage 39.4% → 52.4%
maxpert Oct 30, 2025
d75f631
feat: Add RabbitMQ interoperability tests for AMQP protocol validation
maxpert Oct 30, 2025
d4093a2
perf: Add comprehensive performance optimization and benchmarking
maxpert Oct 30, 2025
6b1816c
refactor: Improve code readability and documentation in performance o…
maxpert Oct 30, 2025
0c6c2d2
feat: add automated multi-platform release workflow
maxpert Oct 30, 2025
dd1a128
docs: Add comprehensive Phase 11 performance improvement plan
maxpert Oct 30, 2025
9680c6e
fix: Resolve all go vet linting errors for mutex lock copying
maxpert Oct 30, 2025
00dd563
fix: Replace golangci-lint with standard Go tools for 1.25.1 compatib…
maxpert Oct 30, 2025
5a13aad
fix: Exclude examples and testdata from linting checks
maxpert Oct 30, 2025
a6fd7fa
fix: Fix release workflow triggers to support multiple release creati…
maxpert Oct 30, 2025
8324595
fix: Exclude examples directory from test workflow to prevent compila…
maxpert Oct 30, 2025
a34d7c8
fix: Remove Docker job from release workflow to eliminate workflow va…
maxpert Oct 30, 2025
739dca4
fix: Remove Windows support and fix Unix syscalls for cross-platform …
maxpert Oct 30, 2025
e11eed7
feat: Create complete tar.gz release packages with config and documen…
maxpert Oct 30, 2025
6f62972
docs: Remove Docker installation and deployment sections
maxpert Oct 30, 2025
928ccd7
docs: Remove Docker-related content from documentation
maxpert Oct 30, 2025
94b6844
docs: Remove remaining Docker references from documentation
maxpert Oct 30, 2025
4b3c9c2
docs: Remove Docker references from SETUP_SUMMARY.md
maxpert Oct 30, 2025
ef585a4
docs: Major documentation reorganization and cleanup
maxpert Oct 31, 2025
a281e5e
feat: Add RabbitMQ-standard performance benchmark suite
maxpert Oct 31, 2025
ac76582
perf: Improve consumer delivery throughput by 1000x
maxpert Oct 31, 2025
df6bfe4
docs: Update benchmark README with actual performance numbers
maxpert Oct 31, 2025
b927509
feat: Implement RabbitMQ-style unified storage architecture with memo…
maxpert Oct 31, 2025
fa12422
perf: Comprehensive performance optimization - 6x throughput improvement
maxpert Nov 1, 2025
7f15dd9
feat: Implement RabbitMQ-style three-mailbox architecture with unboun…
maxpert Nov 1, 2025
389ca66
feat: Complete storage rewrite with three-tier architecture and YAML …
maxpert Nov 4, 2025
dd45481
fix: Resolve go vet warnings by using pointer slices in DurableEntity…
maxpert Nov 4, 2025
7137e60
chore: Update benchmark script to use YAML config system
maxpert Nov 4, 2025
e11a063
feat: Metadata caching and configuration standardization
maxpert Nov 4, 2025
4378206
test(broker): Add comprehensive exchange routing tests
maxpert Nov 4, 2025
0b2d48a
fix(server): Fix data races in consumer delivery loop
maxpert Nov 4, 2025
6470e29
Revert "fix(server): Fix data races in consumer delivery loop"
maxpert Nov 4, 2025
5972260
fix: Replace Closed bool with atomic.Bool and Channels map with sync.Map
maxpert Nov 4, 2025
84b1f3e
style: Format code with gofmt
maxpert Nov 4, 2025
cf5fae1
Add high-priority Prometheus metrics and monitoring stack
maxpert Nov 5, 2025
6dbafe0
Add high priority metrics feature
maxpert Nov 5, 2025
c1d6b53
feat: Implement AMQP 0.9.1 compliant frame fragmentation for large me…
maxpert Nov 6, 2025
fd573a8
perf: Implement buffer pooling and timer reuse for 26.5% allocation r…
maxpert Nov 6, 2025
f0b2fb2
fix: Correct config filename in release workflow
maxpert Nov 6, 2025
5c9d6ad
chore(deps)(deps): bump golang.org/x/sys in /src/amqp-go
dependabot[bot] Dec 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
name: Bug report
about: Create a report to help us improve
title: '[BUG] '
labels: bug
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Configure server with '...'
2. Send message to '....'
3. Observe error '....'

**Expected behavior**
A clear and concise description of what you expected to happen.

**Environment:**
- OS: [e.g. Ubuntu 22.04, macOS 14, Windows 11]
- AMQP-Go Version: [e.g. v0.1.0]
- Go Version: [e.g. 1.25.1]
- Storage Backend: [e.g. memory, badger]

**Configuration:**
```json
{
// Paste your configuration here (remove sensitive data)
}
```

**Logs:**
```
Paste relevant log output here
```

**Additional context**
Add any other context about the problem here.

24 changes: 24 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: Feature request
about: Suggest an idea for this project
title: '[FEATURE] '
labels: enhancement
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.

**AMQP Compliance**
If this feature relates to AMQP 0.9.1 compliance, please reference the relevant section of the specification.

29 changes: 29 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
version: 2
updates:
# Enable version updates for Go modules
- package-ecosystem: "gomod"
directory: "/src/amqp-go"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 10
labels:
- "dependencies"
- "go"
commit-message:
prefix: "chore(deps)"
include: "scope"

# Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
open-pull-requests-limit: 5
labels:
- "dependencies"
- "github-actions"
commit-message:
prefix: "chore(ci)"

55 changes: 55 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
## Description
<!-- Provide a brief description of the changes in this PR -->

## Type of Change
<!-- Mark the relevant option with an "x" -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update
- [ ] Performance improvement
- [ ] Code refactoring

## Related Issues
<!-- Link to related issues using #issue_number -->
Closes #

## Changes Made
<!-- List the specific changes made in this PR -->
-
-
-

## Testing
<!-- Describe the tests you ran and their results -->
- [ ] All existing tests pass
- [ ] Added new tests for changes
- [ ] Tested manually with the following scenarios:
-
-

## Performance Impact
<!-- If applicable, describe any performance implications -->
- [ ] No performance impact
- [ ] Performance improvement (provide benchmark results)
- [ ] Performance regression (explain why acceptable)

## Documentation
<!-- Check all that apply -->
- [ ] Updated README.md
- [ ] Updated code comments
- [ ] Updated examples
- [ ] No documentation needed

## Checklist
- [ ] My code follows the project's style guidelines
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] My changes generate no new warnings or errors
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged and published

## Screenshots (if applicable)
<!-- Add screenshots to help explain your changes -->

196 changes: 196 additions & 0 deletions .github/workflows/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# GitHub Actions Workflows

This directory contains automated workflows for the AMQP-Go project.

## Workflows

### 1. Release Build (`release.yml`)

**Triggers:**
- When a new release is created on GitHub
- Manual dispatch with version input

**What it does:**
- Builds binaries for all supported platforms:
- macOS: arm64, amd64
- Linux: amd64, arm64, 386
- Generates SHA256 checksums for each binary
- Uploads all binaries to the GitHub release

**Platforms:**
- macOS builds run on: `macos-latest`
- Linux cross-compilation runs on: `ubuntu-latest`

**Usage:**
```bash
# Create a release
git tag -a v0.1.0 -m "Release v0.1.0"
git push origin v0.1.0

# Then create release on GitHub
# Workflow will automatically trigger
```

**Manual trigger:**
- Go to Actions → Release Build → Run workflow
- Enter version tag (e.g., v0.1.0-dev)

### 2. Build and Test (`build.yml`)

**Triggers:**
- Push to `main` or `develop` branches
- Pull requests to `main` or `develop`

**What it does:**
- Runs full test suite with race detection
- Generates code coverage report
- Uploads coverage to Codecov
- Runs golangci-lint for code quality
- Builds the binary to verify compilation
- Caches Go modules for faster builds

**Jobs:**
1. **Test**: Run tests with coverage
2. **Lint**: Static code analysis
3. **Build**: Verify binary builds

### 3. CodeQL Analysis (`codeql.yml`)

**Triggers:**
- Push to `main` branch
- Pull requests to `main`
- Weekly schedule (Monday)

**What it does:**
- Performs security and quality analysis
- Identifies potential vulnerabilities
- Checks for common coding mistakes
- Reports findings in Security tab

### 4. Dependabot (`dependabot.yml`)

**Schedule:** Weekly on Monday

**What it does:**
- Checks for Go module updates
- Checks for GitHub Actions updates
- Creates PRs for outdated dependencies
- Keeps dependencies secure and up-to-date

## Secrets Required

### For Codecov (Optional)

- `CODECOV_TOKEN`: Token from codecov.io (optional but recommended)

## Workflow Badges

Add these to your README.md:

```markdown
[![Build Status](https://github.com/YOUR-ORG/strangeq/workflows/Build%20and%20Test/badge.svg)](https://github.com/YOUR-ORG/strangeq/actions)
[![CodeQL](https://github.com/YOUR-ORG/strangeq/workflows/CodeQL/badge.svg)](https://github.com/YOUR-ORG/strangeq/actions)
[![codecov](https://codecov.io/gh/YOUR-ORG/strangeq/branch/main/graph/badge.svg)](https://codecov.io/gh/YOUR-ORG/strangeq)
```

## Local Testing

### Test the build locally

```bash
# Install act (GitHub Actions local runner)
brew install act

# List workflows
act -l

# Run push event
act push

# Run pull request
act pull_request

# Run release (dry run)
act release -n
```

### Test builds manually

```bash
cd src/amqp-go

# Test all platforms
for GOOS in darwin linux windows; do
for GOARCH in amd64 arm64; do
echo "Building $GOOS/$GOARCH"
GOOS=$GOOS GOARCH=$GOARCH go build -o /dev/null ./cmd/amqp-server 2>/dev/null && \
echo " ✓ $GOOS/$GOARCH" || \
echo " ✗ $GOOS/$GOARCH"
done
done
```

## Troubleshooting

### Release workflow not triggering

1. Check if release was created (not just a tag)
2. Verify workflow file is in `main` branch
3. Check Actions tab for any errors

### Build failures

1. Check Go version compatibility (requires 1.25.1+)
2. Verify all tests pass locally: `go test ./...`
3. Check for platform-specific issues

### Codecov upload failing

1. This is non-critical - workflow will continue
2. Add `CODECOV_TOKEN` secret for better reliability
3. Check codecov.io for project setup

## Customization

### Change Go version

Edit all workflow files:

```yaml
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.1' # Update this
```

### Add new platform

Edit `release.yml` matrix:

```yaml
matrix:
include:
# Add new platform
- os: freebsd
arch: amd64
runner: ubuntu-latest
goos: freebsd
goarch: amd64
```

## Best Practices

1. **Always test locally** before pushing
2. **Create feature branches** for changes
3. **Wait for CI** before merging PRs
4. **Review coverage reports** to maintain quality
5. **Update workflows** when adding new dependencies
6. **Keep actions up to date** (Dependabot helps)
7. **Monitor workflow runs** for failures

## Resources

- [GitHub Actions Documentation](https://docs.github.com/en/actions)
- [Go GitHub Actions](https://github.com/actions/setup-go)
- [CodeQL Documentation](https://codeql.github.com/docs/)

Loading
Loading