12 KiB
12 KiB
🎵 Veza Fixtures System
Système de fixtures complet et robuste pour Veza Platform
Le système de fixtures Veza est une solution complète pour générer, gérer et valider des données de test réalistes pour tous les services de la plateforme Veza. Il offre une approche cohérente et scalable pour les tests, le développement et les démonstrations.
🚀 Fonctionnalités Principales
✨ Génération de Données Avancée
- 🎯 Données réalistes avec relations cohérentes
- 🌍 Multi-environnements (development, testing, staging, demo)
- 🎲 Reproductible avec système de seeds
- 📊 Scalable de 10 à 10,000+ entités
🔗 Intégration Multi-Services
- 🌐 Web Service - MSW handlers et localStorage
- 💬 Chat Server - Base de données PostgreSQL et cache Redis
- 🎵 Stream Server - Sessions de streaming et métriques
- 🔧 Backend API - Données utilisateur et métadonnées
🎬 Scénarios de Test Complets
- 👤 User Journey - Parcours utilisateur réalistes
- ⚡ Performance - Tests de charge et stress
- 🔗 Integration - Communication inter-services
- 🎯 Edge Cases - Cas limites et erreurs
🛠️ Outils CLI Puissants
- 📊 Generate - Création de datasets
- 🌱 Seed - Population des services
- 🔍 Validate - Vérification d'intégrité
- 🧹 Clean - Nettoyage des données
📦 Installation
Prérequis
- Node.js 18+
- PostgreSQL 13+
- Redis 6+
- npm ou yarn
Installation Rapide
# Cloner et installer
git clone https://github.com/your-org/veza-platform.git
cd veza-platform/fixtures
# Installation automatique
./tools/scripts/install.sh
# Ou installation manuelle
npm install
npm run build
Configuration
# Copier et configurer l'environnement
cp ../env.example .env
# Éditer les variables de connexion
nano .env
🎯 Démarrage Rapide
Génération de Base
# Générer un dataset de développement
npm run generate -- --env development
# Alimenter tous les services
npm run seed -- --service all
# Vérifier l'intégrité
npm run validate
Utilisation CLI
# Voir l'état du système
veza-fixtures status
# Générer des données personnalisées
veza-fixtures generate --env staging --users 200 --tracks 500
# Lancer un scénario de test
veza-fixtures scenario --run onboarding
# Nettoyer les données
veza-fixtures clean --service web --force
Utilisation Programmatique
import { VezaFixtures, WebFixtures } from '@veza/fixtures'
// Initialisation rapide
const result = await quickStart({
environment: 'development',
services: ['web', 'chat'],
scenario: 'onboarding'
})
// Utilisation avancée
await VezaFixtures.initialize('testing')
const dataset = VezaFixtures.generateCompleteDataset()
await WebFixtures.initialize()
🏗️ Architecture
Structure du Projet
fixtures/
├── core/ # Système central
│ ├── generators/ # Générateurs de données
│ │ ├── users.ts # Utilisateurs réalistes
│ │ ├── audio.ts # Contenu audio
│ │ └── conversations.ts # Messages et conversations
│ ├── schemas/ # Schémas de validation
│ ├── utils/ # Utilitaires partagés
│ └── config.ts # Configuration centrale
├── services/ # Intégrations par service
│ ├── web/ # Frontend fixtures
│ ├── chat-server/ # Backend chat
│ └── stream-server/ # Backend streaming
├── scenarios/ # Scénarios de test
│ ├── user-journey/ # Parcours utilisateur
│ ├── performance/ # Tests de performance
│ └── integration/ # Tests d'intégration
├── environments/ # Configurations d'environnement
├── tools/ # Outils CLI et scripts
└── test/ # Tests du système
Flux de Données
graph TD
A[Configuration] --> B[Générateurs]
B --> C[Relations Manager]
C --> D[Service Fixtures]
D --> E[Validation]
E --> F[Export/Seed]
G[CLI Tools] --> B
H[Scenarios] --> B
I[CI/CD] --> G
📊 Générateurs de Données
Générateur d'Utilisateurs
import { UserGenerator } from '@veza/fixtures'
// Utilisateur basique
const user = UserGenerator.generate()
// Utilisateur spécialisé
const artist = UserGenerator.generateArtist({
isVerified: true,
withAvatar: true
})
// Batch avec distribution
const users = UserGenerator.generateWithDistribution()
Fonctionnalités:
- ✅ Rôles réalistes (admin, artist, producer, user)
- ✅ Profils complets avec préférences
- ✅ Relations sociales (followers, following)
- ✅ Statistiques d'activité cohérentes
Générateur Audio
import { AudioGenerator } from '@veza/fixtures'
// Track individuelle
const track = AudioGenerator.generate({
genre: 'electronic',
isPopular: true
})
// Album complet
const album = AudioGenerator.generateAlbum(10)
// Playlist thématique
const playlist = AudioGenerator.generatePlaylist({
theme: 'workout',
trackCount: 20
})
Fonctionnalités:
- ✅ Métadonnées audio réalistes
- ✅ Waveform data généré
- ✅ Relations album/track cohérentes
- ✅ Statistiques d'écoute
Générateur de Conversations
import { ConversationGenerator } from '@veza/fixtures'
// Conversation directe
const directChat = ConversationGenerator.generateConversation({
type: 'direct',
participantIds: [user1.id, user2.id]
})
// Scénario complexe
const scenario = ConversationGenerator.generateScenario(
ConversationGenerator.SCENARIOS[0], // Studio Collaboration
userIds
)
Fonctionnalités:
- ✅ Types variés (direct, group, channel)
- ✅ Messages avec réactions et mentions
- ✅ Scénarios pré-définis réalistes
- ✅ Patterns de conversation naturels
🎬 Scénarios de Test
Onboarding Utilisateur
# Lancer le scénario d'onboarding
veza-fixtures scenario --run onboarding
Couvre:
- ✅ Inscription et vérification email
- ✅ Complétion du profil
- ✅ Première écoute et playlist
- ✅ Participation au chat communautaire
Tests de Performance
# Test de charge haute
veza-fixtures scenario --run high-load
Simule:
- ✅ 1000+ utilisateurs concurrent
- ✅ Streaming audio simultané
- ✅ Flood de messages chat
- ✅ Métriques de performance
Intégration Cross-Service
# Test d'intégration complète
veza-fixtures scenario --run integration
Valide:
- ✅ Communication inter-services
- ✅ Cohérence des données
- ✅ Gestion des erreurs
- ✅ Performance sous charge
🔧 Configuration Avancée
Environnements
// fixtures/environments/staging.ts
export const stagingConfig = {
generation: {
users: { count: 500 },
audio: { trackCount: 2000 },
conversations: { directCount: 200 }
},
database: {
host: 'staging-db.example.com'
}
}
Personnalisation des Générateurs
// Configuration Faker personnalisée
import { vezaFaker } from '@veza/fixtures'
vezaFaker.music.songTitle = () => {
return 'Mon Titre Personnalisé'
}
Hooks et Middleware
// Hooks de génération
DataRelationManager.onUserGenerated((user) => {
console.log(`Utilisateur créé: ${user.username}`)
})
🧪 Tests et Validation
Tests Unitaires
# Lancer les tests
npm test
# Coverage
npm run test:coverage
Validation des Données
# Validation complète
npm run validate -- --check-relations --check-performance
# Validation spécifique
npm run validate -- --service chat-server
CI/CD Integration
Le système s'intègre automatiquement avec GitHub Actions :
- ✅ Validation PR - Vérification des fixtures modifiées
- ✅ Tests nightly - Tests complets quotidiens
- ✅ Performance regression - Détection de régressions
📈 Monitoring et Métriques
Métriques de Génération
# Statistiques détaillées
veza-fixtures status --verbose
Affiche:
- 📊 Nombre d'entités par type
- ⏱️ Temps de génération
- 🔗 Cohérence des relations
- 💾 Utilisation mémoire
Health Checks
// Vérification de santé des services
const health = await ChatServerFixtures.healthCheck()
console.log(health) // { database: true, redis: true, dataConsistency: true }
🚀 Cas d'Usage
Développement Local
# Setup rapide pour développement
npm run dev:with-fixtures
Tests Automatisés
# Tests avec données fraîches
npm run test:with-fixtures
Démonstrations Client
# Dataset de démo professionnel
veza-fixtures generate --env demo --format json
Tests de Performance
# Stress test complet
veza-fixtures scenario --run high-load
🔍 Dépannage
Problèmes Courants
Erreur de connexion base de données:
# Vérifier la configuration
veza-fixtures status
# Diagnostics complets
./tools/scripts/install.sh doctor
Données incohérentes:
# Validation et correction
veza-fixtures validate --check-relations
veza-fixtures clean --force
veza-fixtures seed --validate
Performance lente:
# Réduire la taille du dataset
veza-fixtures generate --users 50 --tracks 100
Logs et Debug
# Mode verbose
DEBUG=veza:fixtures npm run generate
# Logs détaillés
veza-fixtures generate --verbose
🤝 Contribution
Développement
# Setup développement
git clone https://github.com/your-org/veza-platform.git
cd fixtures
npm install
npm run build
# Tests
npm test
npm run lint
Ajout de Générateurs
// fixtures/core/generators/my-generator.ts
export class MyGenerator {
static generate() {
// Implémentation
}
}
Nouveaux Scénarios
// fixtures/scenarios/my-scenario/index.ts
export class MyScenario {
static async setup() {
// Configuration du scénario
}
}
📚 Documentation API
Classes Principales
VezaFixtures- Point d'entrée principalDataRelationManager- Gestion des relationsUserGenerator- Génération d'utilisateursAudioGenerator- Génération de contenu audioConversationGenerator- Génération de conversations
Interfaces
FixtureConfig- Configuration systèmeUser,Audio,Conversation- Types de donnéesScenarioContext- Contexte de scénario
📝 Changelog
Version 1.0.0
- ✅ Système de fixtures complet
- ✅ Générateurs avancés
- ✅ Intégration multi-services
- ✅ Scénarios de test
- ✅ CLI tools
- ✅ CI/CD integration
📄 Licence
MIT License - voir LICENSE pour les détails.
🆘 Support
- 📧 Email: fixtures-support@veza-platform.com
- 💬 Discord: Veza Platform Community
- 🐛 Issues: GitHub Issues
- 📖 Docs: Documentation complète
Fait avec ❤️ par l'équipe Veza Platform