@@ -412,7 +412,7 @@ describe('TestAwsCloudWatchEmfExporter', () => {
412
412
413
413
expect ( result ) . toHaveProperty ( '_aws' ) ;
414
414
expect ( result . _aws . CloudWatchMetrics [ 0 ] . Namespace ) . toEqual ( 'TestNamespace' ) ;
415
- expect ( result . _aws . CloudWatchMetrics [ 0 ] . Dimensions [ 0 ] [ 0 ] ) . toEqual ( 'env' ) ;
415
+ expect ( result . _aws . CloudWatchMetrics [ 0 ] . Dimensions ! [ 0 ] [ 0 ] ) . toEqual ( 'env' ) ;
416
416
expect ( result . _aws . CloudWatchMetrics [ 0 ] . Metrics [ 0 ] . Name ) . toEqual ( 'gauge_metric' ) ;
417
417
expect ( result . _aws . CloudWatchMetrics [ 0 ] . Metrics [ 0 ] . Unit ) . toEqual ( 'Count' ) ;
418
418
expect ( result . _aws . CloudWatchMetrics [ 0 ] . Metrics [ 1 ] . Name ) . toEqual ( 'sum_metric' ) ;
@@ -672,10 +672,10 @@ describe('TestAwsCloudWatchEmfExporter', () => {
672
672
673
673
expect ( call1Args . logEvents . length ) . toEqual ( 0 ) ;
674
674
expect ( call2Args . logEvents [ 0 ] . message ) . toMatch (
675
- / ^ \{ " _ a w s " : \{ " T i m e s t a m p " : \d + , " C l o u d W a t c h M e t r i c s " : \[ \{ " N a m e s p a c e " : " T e s t N a m e s p a c e " , " D i m e n s i o n s " : \[ \[ " u n i q u e K e y 1 " \] \] , " M e t r i c s " : \[ \{ " N a m e " : " d e s c r i p t o r N a m e " , " U n i t " : " M i l l i s e c o n d s " \} \] \} \] } , " V e r s i o n " : " 1 " , " d e s c r i p t o r N a m e " : 3 , " u n i q u e K e y 1 " : " u n i q u e V a l u e 1 " \} $ /
675
+ / ^ \{ " _ a w s " : \{ " T i m e s t a m p " : \d + , " C l o u d W a t c h M e t r i c s " : \[ \{ " N a m e s p a c e " : " T e s t N a m e s p a c e " , " M e t r i c s " : \[ \{ " N a m e " : " d e s c r i p t o r N a m e " , " U n i t " : " M i l l i s e c o n d s " \} \] , " D i m e n s i o n s " : \[ \[ " u n i q u e K e y 1 " \] \] \} \] } , " V e r s i o n " : " 1 " , " d e s c r i p t o r N a m e " : 3 , " u n i q u e K e y 1 " : " u n i q u e V a l u e 1 " \} $ /
676
676
) ;
677
677
expect ( call3Args . logEvents [ 0 ] . message ) . toMatch (
678
- / ^ \{ " _ a w s " : \{ " T i m e s t a m p " : \d + , " C l o u d W a t c h M e t r i c s " : \[ \{ " N a m e s p a c e " : " T e s t N a m e s p a c e " , " D i m e n s i o n s " : \[ \[ " u n i q u e K e y 2 " \] \] , " M e t r i c s " : \[ \{ " N a m e " : " d e s c r i p t o r N a m e " , " U n i t " : " M i l l i s e c o n d s " \} \] \} \] } , " V e r s i o n " : " 1 " , " d e s c r i p t o r N a m e " : 9 , " u n i q u e K e y 2 " : " u n i q u e V a l u e 2 " \} $ /
678
+ / ^ \{ " _ a w s " : \{ " T i m e s t a m p " : \d + , " C l o u d W a t c h M e t r i c s " : \[ \{ " N a m e s p a c e " : " T e s t N a m e s p a c e " , " M e t r i c s " : \[ \{ " N a m e " : " d e s c r i p t o r N a m e " , " U n i t " : " M i l l i s e c o n d s " \} \] , " D i m e n s i o n s " : \[ \[ " u n i q u e K e y 2 " \] \] \} \] } , " V e r s i o n " : " 1 " , " d e s c r i p t o r N a m e " : 9 , " u n i q u e K e y 2 " : " u n i q u e V a l u e 2 " \} $ /
679
679
) ;
680
680
resolve ( ) ;
681
681
} ) ;
@@ -747,8 +747,42 @@ describe('TestAwsCloudWatchEmfExporter', () => {
747
747
// Check CloudWatch metrics structure
748
748
const cwMetrics = result . _aws . CloudWatchMetrics [ 0 ] ;
749
749
expect ( cwMetrics . Namespace ) . toEqual ( 'TestNamespace' ) ;
750
- expect ( cwMetrics . Dimensions [ 0 ] ) . toContain ( 'env' ) ;
751
- expect ( cwMetrics . Dimensions [ 0 ] ) . toContain ( 'service' ) ;
750
+ expect ( cwMetrics ) . toHaveProperty ( 'Dimensions' ) ;
751
+ expect ( cwMetrics . Dimensions ! [ 0 ] ) . toContain ( 'env' ) ;
752
+ expect ( cwMetrics . Dimensions ! [ 0 ] ) . toContain ( 'service' ) ;
753
+ expect ( cwMetrics . Metrics [ 0 ] . Name ) . toEqual ( 'gauge_metric' ) ;
754
+ } ) ;
755
+
756
+ it ( 'TestCreateEmfLogWithoutDimensions' , ( ) => {
757
+ /* Test EMF log creation with metrics but no dimensions. */
758
+ // Create test record with empty attributes (no dimensions)
759
+ const gaugeRecord : MetricRecord = {
760
+ ...exporter [ 'createMetricRecord' ] ( 'gauge_metric' , 'Count' , 'Gauge' , Date . now ( ) , { } ) ,
761
+ value : 75.0 ,
762
+ } ;
763
+
764
+ const records = [ gaugeRecord ] ;
765
+ const resource = new Resource ( { 'service.name' : 'test-service' , 'service.version' : '1.0.0' } ) ;
766
+
767
+ const result = exporter [ 'createEmfLog' ] ( records , resource , 1234567890 ) ;
768
+
769
+ // Verify EMF log structure
770
+ expect ( result ) . toHaveProperty ( '_aws' ) ;
771
+ expect ( result . _aws ) . toHaveProperty ( 'CloudWatchMetrics' ) ;
772
+ expect ( result . _aws . Timestamp ) . toEqual ( 1234567890 ) ;
773
+ expect ( result . Version ) . toEqual ( '1' ) ;
774
+
775
+ // Check resource attributes are prefixed
776
+ expect ( result [ 'otel.resource.service.name' ] ) . toEqual ( 'test-service' ) ;
777
+ expect ( result [ 'otel.resource.service.version' ] ) . toEqual ( '1.0.0' ) ;
778
+
779
+ // Check metric value
780
+ expect ( result . gauge_metric ) . toEqual ( 75.0 ) ;
781
+
782
+ // Check CloudWatch metrics structure
783
+ const cwMetrics = result . _aws . CloudWatchMetrics [ 0 ] ;
784
+ expect ( cwMetrics . Namespace ) . toEqual ( 'TestNamespace' ) ;
785
+ expect ( cwMetrics ) . not . toHaveProperty ( 'Dimensions' ) ;
752
786
expect ( cwMetrics . Metrics [ 0 ] . Name ) . toEqual ( 'gauge_metric' ) ;
753
787
} ) ;
754
788
0 commit comments